Assert existence of config file's parent directory
Fixes TheLocehiliosan/yadm#226 When a config file path is passed to yadm whose parent directory does not exist, git (and hence yadm) fails without writing the file. Yadm should, however, make sure that the directory exists s.t. git can just write to the file.
This commit is contained in:
parent
550a6b4340
commit
60b23e33e8
2 changed files with 26 additions and 0 deletions
|
@ -137,3 +137,27 @@ def test_config_local_write(runner, yadm_y, paths, supported_local_configs):
|
|||
assert run.success
|
||||
assert run.err == ''
|
||||
assert run.out.strip() == f'value_of_{config}'
|
||||
|
||||
|
||||
def test_config_without_parent_directory(runner, yadm_y, paths):
|
||||
"""Write and read attribute to/from config file with non-existent parent directory
|
||||
|
||||
Update configuration file
|
||||
Display value
|
||||
Exit with 0
|
||||
"""
|
||||
|
||||
config_file = paths.root + '/folder/does/not/exist/config'
|
||||
|
||||
run = runner(yadm_y('--yadm-config', config_file, 'config', TEST_KEY, TEST_VALUE))
|
||||
|
||||
assert run.success
|
||||
assert run.err == ''
|
||||
assert run.out == ''
|
||||
|
||||
paths.config.write(TEST_FILE)
|
||||
run = runner(yadm_y('--yadm-config', config_file, 'config', TEST_KEY))
|
||||
|
||||
assert run.success
|
||||
assert run.err == ''
|
||||
assert run.out.strip() == TEST_VALUE
|
||||
|
|
2
yadm
2
yadm
|
@ -849,6 +849,8 @@ EOF
|
|||
CHANGES_POSSIBLE=1
|
||||
|
||||
else
|
||||
# make sure parent folder of config file exists
|
||||
assert_parent "$YADM_CONFIG"
|
||||
# operate on the yadm configuration file
|
||||
"$GIT_PROGRAM" config --file="$(mixed_path "$YADM_CONFIG")" "$@"
|
||||
|
||||
|
|
Loading…
Reference in a new issue