"""Unit tests: remove_stale_links"""
import os
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 == ''
