159 lines
3.7 KiB
Python
159 lines
3.7 KiB
Python
"""Test config"""
|
|
|
|
import os
|
|
|
|
import pytest
|
|
|
|
TEST_SECTION = "test"
|
|
TEST_ATTRIBUTE = "attribute"
|
|
TEST_KEY = f"{TEST_SECTION}.{TEST_ATTRIBUTE}"
|
|
TEST_VALUE = "testvalue"
|
|
TEST_FILE = f"[{TEST_SECTION}]\n\t{TEST_ATTRIBUTE} = {TEST_VALUE}"
|
|
|
|
|
|
def test_config_no_params(runner, yadm_cmd, supported_configs):
|
|
"""No parameters
|
|
|
|
Display instructions
|
|
Display supported configs
|
|
Exit with 0
|
|
"""
|
|
|
|
run = runner(yadm_cmd("config"))
|
|
|
|
assert run.success
|
|
assert run.err == ""
|
|
assert "Please read the CONFIGURATION section" in run.out
|
|
for config in supported_configs:
|
|
assert config in run.out
|
|
|
|
|
|
def test_config_read_missing(runner, yadm_cmd):
|
|
"""Read missing attribute
|
|
|
|
Display an empty value
|
|
Exit with 0
|
|
"""
|
|
|
|
run = runner(yadm_cmd("config", TEST_KEY))
|
|
|
|
assert run.success
|
|
assert run.err == ""
|
|
assert run.out == ""
|
|
|
|
|
|
def test_config_write(runner, yadm_cmd, paths):
|
|
"""Write attribute
|
|
|
|
Display no output
|
|
Update configuration file
|
|
Exit with 0
|
|
"""
|
|
|
|
run = runner(yadm_cmd("config", TEST_KEY, TEST_VALUE))
|
|
|
|
assert run.success
|
|
assert run.err == ""
|
|
assert run.out == ""
|
|
assert paths.config.read().strip() == TEST_FILE
|
|
|
|
|
|
def test_config_read(runner, yadm_cmd, paths):
|
|
"""Read attribute
|
|
|
|
Display value
|
|
Exit with 0
|
|
"""
|
|
|
|
paths.config.write(TEST_FILE)
|
|
run = runner(yadm_cmd("config", TEST_KEY))
|
|
|
|
assert run.success
|
|
assert run.err == ""
|
|
assert run.out.strip() == TEST_VALUE
|
|
|
|
|
|
def test_config_update(runner, yadm_cmd, paths):
|
|
"""Update attribute
|
|
|
|
Display no output
|
|
Update configuration file
|
|
Exit with 0
|
|
"""
|
|
|
|
paths.config.write(TEST_FILE)
|
|
|
|
run = runner(yadm_cmd("config", TEST_KEY, TEST_VALUE + "extra"))
|
|
|
|
assert run.success
|
|
assert run.err == ""
|
|
assert run.out == ""
|
|
|
|
assert paths.config.read().strip() == TEST_FILE + "extra"
|
|
|
|
|
|
@pytest.mark.usefixtures("ds1_repo_copy")
|
|
def test_config_local_read(runner, yadm_cmd, paths, supported_local_configs):
|
|
"""Read local attribute
|
|
|
|
Display value from the repo config
|
|
Exit with 0
|
|
"""
|
|
|
|
# populate test values
|
|
for config in supported_local_configs:
|
|
os.system(f'GIT_DIR="{paths.repo}" ' f'git config --local "{config}" "value_of_{config}"')
|
|
|
|
# run yadm config
|
|
for config in supported_local_configs:
|
|
run = runner(yadm_cmd("config", config))
|
|
assert run.success
|
|
assert run.err == ""
|
|
assert run.out.strip() == f"value_of_{config}"
|
|
|
|
|
|
@pytest.mark.usefixtures("ds1_repo_copy")
|
|
def test_config_local_write(runner, yadm_cmd, paths, supported_local_configs):
|
|
"""Write local attribute
|
|
|
|
Display no output
|
|
Write value to the repo config
|
|
Exit with 0
|
|
"""
|
|
|
|
# run yadm config
|
|
for config in supported_local_configs:
|
|
run = runner(yadm_cmd("config", config, f"value_of_{config}"))
|
|
assert run.success
|
|
assert run.err == ""
|
|
assert run.out == ""
|
|
|
|
# verify test values
|
|
for config in supported_local_configs:
|
|
run = runner(command=("git", "config", config), env={"GIT_DIR": paths.repo})
|
|
assert run.success
|
|
assert run.err == ""
|
|
assert run.out.strip() == f"value_of_{config}"
|
|
|
|
|
|
def test_config_without_parent_directory(runner, yadm_cmd, paths):
|
|
"""Write/read attribute to/from config file with non-existent parent dir
|
|
|
|
Update configuration file
|
|
Display value
|
|
Exit with 0
|
|
"""
|
|
|
|
config_file = paths.root + "/folder/does/not/exist/config"
|
|
|
|
run = runner(yadm_cmd("--yadm-config", config_file, "config", TEST_KEY, TEST_VALUE))
|
|
|
|
assert run.success
|
|
assert run.err == ""
|
|
assert run.out == ""
|
|
|
|
run = runner(yadm_cmd("--yadm-config", config_file, "config", TEST_KEY))
|
|
|
|
assert run.success
|
|
assert run.err == ""
|
|
assert run.out.strip() == TEST_VALUE
|