e7f9616b39
The new test system is written with py.test. These tests are more comprehensive, run faster by an order of magnitude, and are far more maintainable. The tests themselves conform to PEP8.
139 lines
3.2 KiB
Python
139 lines
3.2 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_y, supported_configs):
|
|
"""No parameters
|
|
|
|
Display instructions
|
|
Display supported configs
|
|
Exit with 0
|
|
"""
|
|
|
|
run = runner(yadm_y('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_y):
|
|
"""Read missing attribute
|
|
|
|
Display an empty value
|
|
Exit with 0
|
|
"""
|
|
|
|
run = runner(yadm_y('config', TEST_KEY))
|
|
|
|
assert run.success
|
|
assert run.err == ''
|
|
assert run.out == ''
|
|
|
|
|
|
def test_config_write(runner, yadm_y, paths):
|
|
"""Write attribute
|
|
|
|
Display no output
|
|
Update configuration file
|
|
Exit with 0
|
|
"""
|
|
|
|
run = runner(yadm_y('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_y, paths):
|
|
"""Read attribute
|
|
|
|
Display value
|
|
Exit with 0
|
|
"""
|
|
|
|
paths.config.write(TEST_FILE)
|
|
run = runner(yadm_y('config', TEST_KEY))
|
|
|
|
assert run.success
|
|
assert run.err == ''
|
|
assert run.out.strip() == TEST_VALUE
|
|
|
|
|
|
def test_config_update(runner, yadm_y, paths):
|
|
"""Update attribute
|
|
|
|
Display no output
|
|
Update configuration file
|
|
Exit with 0
|
|
"""
|
|
|
|
paths.config.write(TEST_FILE)
|
|
|
|
run = runner(yadm_y('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_y, 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_y('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_y, 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_y('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}'
|