1
0
mirror of https://github.com/TheLocehiliosan/yadm synced 2026-03-02 03:49:29 +00:00

Support passing relative paths to --yadm-* and -w

Relative paths are expanded relative the current working dir as
expected.
This commit is contained in:
Erik Flodin
2021-01-07 18:59:41 +01:00
parent a5b1067e02
commit a321c88c7c
4 changed files with 55 additions and 57 deletions

View File

@@ -45,13 +45,18 @@ def test_init(
# command args
args = ['init']
cwd = None
if alt_work:
args.extend(['-w', paths.work])
if force:
cwd = paths.work.dirname
args.extend(['-w', paths.work.basename])
else:
args.extend(['-w', paths.work])
if force:
args.append('-f')
# run init
run = runner(yadm_cmd(*args), env={'HOME': home})
run = runner(yadm_cmd(*args), env={'HOME': home}, cwd=cwd)
if repo_present and not force:
assert run.failure

View File

@@ -32,26 +32,30 @@ YDATA = '.local/share/yadm'
'override archive',
'override bootstrap',
])
def test_config(runner, paths, override, expect):
@pytest.mark.parametrize(
'path', ['.', './override', 'override', '.override', '/override'], ids=[
'cwd', './relative', 'relative', 'hidden relative', 'absolute'
])
def test_config(runner, paths, override, expect, path):
"""Test configure_paths"""
opath = 'override'
matches = match_map()
args = []
if path.startswith('/'):
expected_path = path
else:
expected_path = str(paths.root.join(path))
args = [override, path] if override else []
if override == '-Y':
matches = match_map('/' + opath)
if override == '--yadm-data':
matches = match_map(None, '/' + opath)
matches = match_map(expected_path)
elif override == '--yadm-data':
matches = match_map(None, expected_path)
else:
matches = match_map()
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)
for ekey in expect.keys():
matches[ekey] = f'{expect[ekey]}="{expected_path}"'
run_test(runner, paths, args, matches.values(), 0)
run_test(runner, paths, args, matches.values(), cwd=str(paths.root))
def match_map(yadm_dir=None, yadm_data=None):
@@ -71,7 +75,7 @@ def match_map(yadm_dir=None, yadm_data=None):
}
def run_test(runner, paths, args, expected_matches, expected_code=0):
def run_test(runner, paths, args, expected_matches, cwd=None):
"""Run proces global args, and run configure_paths"""
argstring = ' '.join(['"'+a+'"' for a in args])
script = f"""
@@ -83,9 +87,8 @@ def run_test(runner, paths, args, expected_matches, expected_code=0):
configure_paths
declare -p | grep -E '(YADM|GIT)_'
"""
run = runner(command=['bash'], inp=script)
assert run.code == expected_code
assert run.success == (run.code == 0)
assert (run.err if run.success else run.out) == ''
run = runner(command=['bash'], inp=script, cwd=cwd)
assert run.success
assert run.err == ''
for match in expected_matches:
assert match in run.out if run.success else run.err
assert match in run.out