1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- """Unit tests: configure_paths"""
- import pytest
- ARCHIVE = 'files.gpg'
- BOOTSTRAP = 'bootstrap'
- CONFIG = 'config'
- ENCRYPT = 'encrypt'
- HOME = '/testhome'
- REPO = 'repo.git'
- YDIR = '.yadm'
- @pytest.mark.parametrize(
- 'override, expect', [
- (None, {}),
- ('-Y', {}),
- ('--yadm-repo', {'repo': 'YADM_REPO', 'git': 'GIT_DIR'}),
- ('--yadm-config', {'config': 'YADM_CONFIG'}),
- ('--yadm-encrypt', {'encrypt': 'YADM_ENCRYPT'}),
- ('--yadm-archive', {'archive': 'YADM_ARCHIVE'}),
- ('--yadm-bootstrap', {'bootstrap': 'YADM_BOOTSTRAP'}),
- ], ids=[
- 'default',
- 'override yadm dir',
- 'override repo',
- 'override config',
- 'override encrypt',
- 'override archive',
- 'override bootstrap',
- ])
- def test_config(runner, paths, override, expect):
- """Test configure_paths"""
- opath = 'override'
- matches = match_map()
- args = []
- if override == '-Y':
- matches = match_map('/' + opath)
- if override:
- args = [override, '/' + opath]
- for ekey in expect.keys():
- matches[ekey] = f'{expect[ekey]}="/{opath}"'
- run_test(
- runner, paths,
- [override, opath],
- ['must specify a fully qualified'], 1)
- run_test(runner, paths, args, matches.values(), 0)
- def match_map(yadm_dir=None):
- """Create a dictionary of matches, relative to yadm_dir"""
- if not yadm_dir:
- yadm_dir = '/'.join([HOME, YDIR])
- return {
- 'yadm': f'YADM_DIR="{yadm_dir}"',
- 'repo': f'YADM_REPO="{yadm_dir}/{REPO}"',
- 'config': f'YADM_CONFIG="{yadm_dir}/{CONFIG}"',
- 'encrypt': f'YADM_ENCRYPT="{yadm_dir}/{ENCRYPT}"',
- 'archive': f'YADM_ARCHIVE="{yadm_dir}/{ARCHIVE}"',
- 'bootstrap': f'YADM_BOOTSTRAP="{yadm_dir}/{BOOTSTRAP}"',
- 'git': f'GIT_DIR="{yadm_dir}/{REPO}"',
- }
- def run_test(runner, paths, args, expected_matches, expected_code=0):
- """Run proces global args, and run configure_paths"""
- argstring = ' '.join(['"'+a+'"' for a in args])
- script = f"""
- YADM_TEST=1 HOME="{HOME}" source {paths.pgm}
- process_global_args {argstring}
- configure_paths
- declare -p | grep -E '(YADM|GIT)_'
- """
- run = runner(command=['bash'], inp=script)
- assert run.code == expected_code
- assert run.err == ''
- for match in expected_matches:
- assert match in run.out
|