Remove the restriction that the "extract" and "mount" actions must match a single repository (#722).
This commit is contained in:
parent
c7a0cebaf7
commit
851c454ef0
2
NEWS
2
NEWS
@ -1,4 +1,6 @@
|
||||
1.9.2.dev0
|
||||
* #722: Remove the restriction that the "extract" and "mount" actions must match a single
|
||||
repository. Now they work more like other actions, where each repository is applied in turn.
|
||||
* #932: Fix the missing build backend setting in pyproject.toml to allow Fedora builds.
|
||||
* #934: Update the logic that probes for the borgmatic streaming database dump, bootstrap
|
||||
metadata, and check state directories to support more platforms and use cases. See the
|
||||
|
@ -793,9 +793,6 @@ def collect_configuration_run_summary_logs(configs, config_paths, arguments):
|
||||
break
|
||||
|
||||
try:
|
||||
if 'extract' in arguments or 'mount' in arguments:
|
||||
validate.guard_single_repository_selected(repository, configs)
|
||||
|
||||
validate.guard_configuration_contains_repository(repository, configs)
|
||||
except ValueError as error:
|
||||
yield from log_error_records(str(error))
|
||||
|
@ -199,26 +199,3 @@ def guard_configuration_contains_repository(repository, configurations):
|
||||
|
||||
if count == 0:
|
||||
raise ValueError(f'Repository "{repository}" not found in configuration files')
|
||||
|
||||
|
||||
def guard_single_repository_selected(repository, configurations):
|
||||
'''
|
||||
Given a repository path and a dict mapping from config filename to corresponding parsed config
|
||||
dict, ensure either a single repository exists across all configuration files or a repository
|
||||
path was given.
|
||||
'''
|
||||
if repository:
|
||||
return
|
||||
|
||||
count = len(
|
||||
tuple(
|
||||
config_repository
|
||||
for config in configurations.values()
|
||||
for config_repository in config['repositories']
|
||||
)
|
||||
)
|
||||
|
||||
if count != 1:
|
||||
raise ValueError(
|
||||
"Can't determine which repository to use. Use --repository to disambiguate"
|
||||
)
|
||||
|
@ -1397,7 +1397,6 @@ def test_collect_configuration_run_summary_executes_hooks_for_create():
|
||||
|
||||
|
||||
def test_collect_configuration_run_summary_logs_info_for_success_with_extract():
|
||||
flexmock(module.validate).should_receive('guard_single_repository_selected')
|
||||
flexmock(module.validate).should_receive('guard_configuration_contains_repository')
|
||||
flexmock(module).should_receive('run_configuration').and_return([])
|
||||
arguments = {'extract': flexmock(repository='repo')}
|
||||
@ -1429,7 +1428,6 @@ def test_collect_configuration_run_summary_logs_extract_with_repository_error():
|
||||
|
||||
|
||||
def test_collect_configuration_run_summary_logs_info_for_success_with_mount():
|
||||
flexmock(module.validate).should_receive('guard_single_repository_selected')
|
||||
flexmock(module.validate).should_receive('guard_configuration_contains_repository')
|
||||
flexmock(module).should_receive('run_configuration').and_return([])
|
||||
arguments = {'mount': flexmock(repository='repo')}
|
||||
|
@ -210,32 +210,3 @@ def test_guard_configuration_contains_repository_errors_when_repository_does_not
|
||||
repository='nope',
|
||||
configurations={'config.yaml': {'repositories': ['repo', 'repo2']}},
|
||||
)
|
||||
|
||||
|
||||
def test_guard_single_repository_selected_raises_when_multiple_repositories_configured_and_none_selected():
|
||||
with pytest.raises(ValueError):
|
||||
module.guard_single_repository_selected(
|
||||
repository=None,
|
||||
configurations={'config.yaml': {'repositories': ['repo', 'repo2']}},
|
||||
)
|
||||
|
||||
|
||||
def test_guard_single_repository_selected_does_not_raise_when_single_repository_configured_and_none_selected():
|
||||
module.guard_single_repository_selected(
|
||||
repository=None,
|
||||
configurations={'config.yaml': {'repositories': ['repo']}},
|
||||
)
|
||||
|
||||
|
||||
def test_guard_single_repository_selected_does_not_raise_when_no_repositories_configured_and_one_selected():
|
||||
module.guard_single_repository_selected(
|
||||
repository='repo',
|
||||
configurations={'config.yaml': {'repositories': []}},
|
||||
)
|
||||
|
||||
|
||||
def test_guard_single_repository_selected_does_not_raise_when_repositories_configured_and_one_selected():
|
||||
module.guard_single_repository_selected(
|
||||
repository='repo',
|
||||
configurations={'config.yaml': {'repositories': ['repo', 'repo2']}},
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user