Merge override values when specifying the "--override" flag multiple times (#361).

This commit is contained in:
Dan Helfman 2020-10-23 16:06:00 -07:00
parent 446a2bc15a
commit 1ea04aedf0
3 changed files with 32 additions and 0 deletions

2
NEWS
View file

@ -2,6 +2,8 @@
* #341: Add "temporary_directory" option for changing Borg's temporary directory. * #341: Add "temporary_directory" option for changing Borg's temporary directory.
* #352: Lock down systemd security settings in sample systemd service file. * #352: Lock down systemd security settings in sample systemd service file.
* #355: Fix traceback when a database hook value is null in a configuration file. * #355: Fix traceback when a database hook value is null in a configuration file.
* #361: Merge override values when specifying the "--override" flag multiple times. The previous
behavior was to take the value of the last "--override" flag only.
1.5.10 1.5.10
* #347: Add hooks that run for the "extract" action: "before_extract" and "after_extract". * #347: Add hooks that run for the "extract" action: "before_extract" and "after_extract".

View file

@ -178,6 +178,7 @@ def parse_arguments(*unparsed_arguments):
metavar='SECTION.OPTION=VALUE', metavar='SECTION.OPTION=VALUE',
nargs='+', nargs='+',
dest='overrides', dest='overrides',
action='extend',
help='One or more configuration file options to override with specified values', help='One or more configuration file options to override with specified values',
) )
global_group.add_argument( global_group.add_argument(

View file

@ -71,6 +71,35 @@ def test_parse_arguments_with_log_file_verbosity_overrides_default():
assert global_arguments.log_file_verbosity == -1 assert global_arguments.log_file_verbosity == -1
def test_parse_arguments_with_single_override_parses():
flexmock(module.collect).should_receive('get_default_config_paths').and_return(['default'])
arguments = module.parse_arguments('--override', 'foo.bar=baz')
global_arguments = arguments['global']
assert global_arguments.overrides == ['foo.bar=baz']
def test_parse_arguments_with_multiple_overrides_parses():
flexmock(module.collect).should_receive('get_default_config_paths').and_return(['default'])
arguments = module.parse_arguments('--override', 'foo.bar=baz', 'foo.quux=7')
global_arguments = arguments['global']
assert global_arguments.overrides == ['foo.bar=baz', 'foo.quux=7']
def test_parse_arguments_with_multiple_overrides_and_flags_parses():
flexmock(module.collect).should_receive('get_default_config_paths').and_return(['default'])
arguments = module.parse_arguments(
'--override', 'foo.bar=baz', '--override', 'foo.quux=7', 'this.that=8'
)
global_arguments = arguments['global']
assert global_arguments.overrides == ['foo.bar=baz', 'foo.quux=7', 'this.that=8']
def test_parse_arguments_with_list_json_overrides_default(): def test_parse_arguments_with_list_json_overrides_default():
arguments = module.parse_arguments('list', '--json') arguments = module.parse_arguments('list', '--json')