"""Test yadm.alt-copy""" import os import pytest @pytest.mark.parametrize( "setting, expect_link, pre_existing", [ (None, True, None), (True, False, None), (False, True, None), (True, False, "link"), (True, False, "file"), ], ids=[ "unset", "true", "false", "pre-existing symlink", "pre-existing file", ], ) @pytest.mark.usefixtures("ds1_copy") def test_alt_copy(runner, yadm_cmd, paths, tst_sys, setting, expect_link, pre_existing): """Test yadm.alt-copy""" if setting is not None: os.system(" ".join(yadm_cmd("config", "yadm.alt-copy", str(setting)))) expected_content = f"test_alt_copy##os.{tst_sys}" alt_path = paths.work.join("test_alt_copy") if pre_existing == "symlink": alt_path.mklinkto(expected_content) elif pre_existing == "file": alt_path.write("wrong content") run = runner(yadm_cmd("alt")) assert run.success assert run.err == "" action = "Copying" if setting is True else "Linking" assert action in run.out assert alt_path.read() == expected_content assert alt_path.islink() == expect_link