Also read .yml ending configuration files

Closes https://projects.torsion.org/witten/borgmatic/issues/178.
This commit is contained in:
Luke Murphy 2019-05-19 13:04:42 +02:00
parent 8f882ea3ea
commit 8424e443a9
No known key found for this signature in database
GPG key ID: 5E2EF5A63E3718CC
2 changed files with 18 additions and 2 deletions

View file

@ -22,7 +22,7 @@ def collect_config_filenames(config_paths):
''' '''
Given a sequence of config paths, both filenames and directories, resolve that to an iterable Given a sequence of config paths, both filenames and directories, resolve that to an iterable
of files. Accomplish this by listing any given directories looking for contained config files of files. Accomplish this by listing any given directories looking for contained config files
(ending with the ".yaml" extension). This is non-recursive, so any directories within the given (ending with the ".yaml" or ".yml" extension). This is non-recursive, so any directories within the given
directories are ignored. directories are ignored.
Return paths even if they don't exist on disk, so the user can find out about missing Return paths even if they don't exist on disk, so the user can find out about missing
@ -43,5 +43,6 @@ def collect_config_filenames(config_paths):
for filename in sorted(os.listdir(path)): for filename in sorted(os.listdir(path)):
full_filename = os.path.join(path, filename) full_filename = os.path.join(path, filename)
if full_filename.endswith('.yaml') and not os.path.isdir(full_filename): matching_filetype = full_filename.endswith('.yaml') or full_filename.endswith('.yml')
if matching_filetype and not os.path.isdir(full_filename):
yield full_filename yield full_filename

View file

@ -30,6 +30,21 @@ def test_collect_config_filenames_collects_given_files():
assert config_filenames == config_paths assert config_filenames == config_paths
def test_collect_config_filenames_collects_yml_file_endings():
config_paths = ('config.yaml', '/etc/borgmatic.d')
mock_path = flexmock(module.os.path)
mock_path.should_receive('exists').and_return(True)
mock_path.should_receive('isdir').with_args('config.yaml').and_return(False)
mock_path.should_receive('isdir').with_args('/etc/borgmatic.d').and_return(True)
mock_path.should_receive('isdir').with_args('/etc/borgmatic.d/foo.yml').and_return(False)
flexmock(module.os).should_receive('listdir')
flexmock(sys.modules['builtins']).should_receive('sorted').and_return(['foo.yml'])
config_filenames = tuple(module.collect_config_filenames(config_paths))
assert config_filenames == ('config.yaml', '/etc/borgmatic.d/foo.yml')
def test_collect_config_filenames_collects_files_from_given_directories_and_ignores_sub_directories(): def test_collect_config_filenames_collects_files_from_given_directories_and_ignores_sub_directories():
config_paths = ('config.yaml', '/etc/borgmatic.d') config_paths = ('config.yaml', '/etc/borgmatic.d')
mock_path = flexmock(module.os.path) mock_path = flexmock(module.os.path)