Allow the "--repository" flag to match across multiple configuration files (#818).

This commit is contained in:
Dan Helfman 2024-01-21 18:25:44 -08:00
parent f9998b50e8
commit e9813d2539
4 changed files with 7 additions and 22 deletions

3
NEWS
View file

@ -1,3 +1,6 @@
1.8.8.dev0
* #818: Allow the "--repository" flag to match across multiple configuration files.
1.8.7 1.8.7
* #736: Store included configuration files within each backup archive in support of the "config * #736: Store included configuration files within each backup archive in support of the "config
bootstrap" action. Previously, only top-level configuration files were stored. bootstrap" action. Previously, only top-level configuration files were stored.

View file

@ -167,11 +167,10 @@ def repositories_match(first, second):
def guard_configuration_contains_repository(repository, configurations): def guard_configuration_contains_repository(repository, configurations):
''' '''
Given a repository path and a dict mapping from config filename to corresponding parsed config Given a repository path and a dict mapping from config filename to corresponding parsed config
dict, ensure that the repository is declared exactly once in all of the configurations. If no dict, ensure that the repository is declared at least once in all of the configurations. If no
repository is given, skip this check. repository is given, skip this check.
Raise ValueError if the repository is not found in a configuration, or is declared multiple Raise ValueError if the repository is not found in any configurations.
times.
''' '''
if not repository: if not repository:
return return
@ -186,9 +185,7 @@ def guard_configuration_contains_repository(repository, configurations):
) )
if count == 0: if count == 0:
raise ValueError(f'Repository {repository} not found in configuration files') raise ValueError(f'Repository "{repository}" not found in configuration files')
if count > 1:
raise ValueError(f'Repository {repository} found in multiple configuration files')
def guard_single_repository_selected(repository, configurations): def guard_single_repository_selected(repository, configurations):

View file

@ -1,6 +1,6 @@
from setuptools import find_packages, setup from setuptools import find_packages, setup
VERSION = '1.8.7' VERSION = '1.8.8.dev0'
setup( setup(

View file

@ -184,21 +184,6 @@ def test_guard_configuration_contains_repository_errors_when_repository_missing_
) )
def test_guard_configuration_contains_repository_errors_when_repository_matches_config_twice():
flexmock(module).should_receive('repositories_match').replace_with(
lambda first, second: first == second
)
with pytest.raises(ValueError):
module.guard_configuration_contains_repository(
repository='repo',
configurations={
'config.yaml': {'repositories': ['repo', 'repo2']},
'other.yaml': {'repositories': ['repo']},
},
)
def test_guard_single_repository_selected_raises_when_multiple_repositories_configured_and_none_selected(): def test_guard_single_repository_selected_raises_when_multiple_repositories_configured_and_none_selected():
with pytest.raises(ValueError): with pytest.raises(ValueError):
module.guard_single_repository_selected( module.guard_single_repository_selected(