2019-09-30 09:44:41 -04:00
|
|
|
"""Unit tests: remove_stale_links"""
|
|
|
|
import os
|
2023-07-10 10:14:33 -04:00
|
|
|
|
2019-09-30 09:44:41 -04:00
|
|
|
import pytest
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize('linked', [True, False])
|
|
|
|
@pytest.mark.parametrize('kind', ['file', 'symlink'])
|
|
|
|
def test_remove_stale_links(runner, yadm, tmpdir, kind, linked):
|
|
|
|
"""Test remove_stale_links()"""
|
|
|
|
|
|
|
|
source_file = tmpdir.join('source_file')
|
|
|
|
source_file.write('source file', ensure=True)
|
|
|
|
link = tmpdir.join('link')
|
|
|
|
|
|
|
|
if kind == 'file':
|
|
|
|
link.write('link file', ensure=True)
|
|
|
|
else:
|
|
|
|
os.system(f'ln -s {source_file} {link}')
|
|
|
|
|
|
|
|
alt_linked = ''
|
|
|
|
if linked:
|
|
|
|
alt_linked = source_file
|
|
|
|
|
|
|
|
script = f"""
|
|
|
|
YADM_TEST=1 source {yadm}
|
|
|
|
possible_alts=({link})
|
|
|
|
alt_linked=({alt_linked})
|
|
|
|
function rm() {{ echo rm "$@"; }}
|
|
|
|
remove_stale_links
|
|
|
|
"""
|
|
|
|
|
|
|
|
run = runner(command=['bash'], inp=script)
|
|
|
|
assert run.err == ''
|
|
|
|
if kind == 'symlink' and not linked:
|
|
|
|
assert f'rm -f {link}' in run.out
|
|
|
|
else:
|
|
|
|
assert run.out == ''
|