mirror of
https://github.com/TheLocehiliosan/yadm
synced 2025-06-06 09:34:00 +00:00
Improve performance (#505) by only running auto-alt (and auto-perms) when HEAD has changed after calling a git command, e.g. after committing or pulling new changes. Also use this new information to remove stale symlinks when an alt file has been removed.
160 lines
3.8 KiB
Python
160 lines
3.8 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 1
|
|
"""
|
|
|
|
run = runner(yadm_cmd("config", TEST_KEY))
|
|
|
|
assert not 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
|