diff --git a/test/test_config.py b/test/test_config.py index 4e44b1c..17d0248 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -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 diff --git a/yadm b/yadm index f3a2343..28bfce2 100755 --- a/yadm +++ b/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")" "$@"