Test that links are removed for invalid alternates (#65)
This commit is contained in:
parent
2375a0955b
commit
093fc24b1b
1 changed files with 50 additions and 0 deletions
|
@ -380,6 +380,56 @@ def test_delimiter(runner, yadm_y, paths,
|
||||||
assert str(paths.work.join(source_file)) not in linked
|
assert str(paths.work.join(source_file)) not in linked
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.usefixtures('ds1_copy')
|
||||||
|
def test_invalid_links_removed(runner, yadm_y, paths):
|
||||||
|
"""Links to invalid alternative files are removed
|
||||||
|
|
||||||
|
This test ensures that when an already linked alternative becomes invalid
|
||||||
|
due to a change in class, the alternate link is removed.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# set the class
|
||||||
|
tst_class = 'testclass'
|
||||||
|
utils.set_local(paths, 'class', tst_class)
|
||||||
|
|
||||||
|
# create files which match the test class
|
||||||
|
utils.create_alt_files(paths, f'##{tst_class}')
|
||||||
|
|
||||||
|
# run alt to trigger linking
|
||||||
|
run = runner(yadm_y('alt'))
|
||||||
|
assert run.success
|
||||||
|
assert run.err == ''
|
||||||
|
linked = linked_list(run.out)
|
||||||
|
|
||||||
|
# assert the proper linking has occurred
|
||||||
|
for file_path in TEST_PATHS:
|
||||||
|
source_file = file_path + '##' + tst_class
|
||||||
|
assert paths.work.join(file_path).islink()
|
||||||
|
target = py.path.local(paths.work.join(file_path).readlink())
|
||||||
|
if target.isfile():
|
||||||
|
assert paths.work.join(file_path).read() == source_file
|
||||||
|
assert str(paths.work.join(source_file)) in linked
|
||||||
|
else:
|
||||||
|
assert paths.work.join(file_path).join(
|
||||||
|
utils.CONTAINED).read() == source_file
|
||||||
|
assert str(paths.work.join(source_file)) in linked
|
||||||
|
|
||||||
|
# change the class so there are no valid alternates
|
||||||
|
utils.set_local(paths, 'class', 'changedclass')
|
||||||
|
|
||||||
|
# run alt to trigger linking
|
||||||
|
run = runner(yadm_y('alt'))
|
||||||
|
assert run.success
|
||||||
|
assert run.err == ''
|
||||||
|
linked = linked_list(run.out)
|
||||||
|
|
||||||
|
# assert the linking is removed
|
||||||
|
for file_path in TEST_PATHS:
|
||||||
|
source_file = file_path + '##' + tst_class
|
||||||
|
assert not paths.work.join(file_path).exists()
|
||||||
|
assert str(paths.work.join(source_file)) not in linked
|
||||||
|
|
||||||
|
|
||||||
def linked_list(output):
|
def linked_list(output):
|
||||||
"""Parse output, and return list of linked files"""
|
"""Parse output, and return list of linked files"""
|
||||||
linked = dict()
|
linked = dict()
|
||||||
|
|
Loading…
Reference in a new issue