"""Test external encryption commands""" import pytest @pytest.mark.parametrize( "crypt", [False, "installed", "installed-but-failed"], ids=["not-installed", "installed", "installed-but-failed"], ) @pytest.mark.parametrize( "cmd,var", [ ["git_crypt", "GIT_CRYPT_PROGRAM"], ["transcrypt", "TRANSCRYPT_PROGRAM"], ], ids=["git-crypt", "transcrypt"], ) def test_ext_encryption(runner, yadm, paths, tmpdir, crypt, cmd, var): """External encryption tests""" paths.repo.ensure(dir=True) bindir = tmpdir.mkdir("bin") pgm = bindir.join("test-ext-crypt") if crypt: pgm.write("#!/bin/sh\necho ext-crypt ran\n") pgm.chmod(0o775) if crypt == "installed-but-failed": pgm.write("false\n", mode="a") script = f""" YADM_TEST=1 source {yadm} YADM_REPO={paths.repo} {var}="{pgm}" {cmd} "param1" """ run = runner(command=["bash"], inp=script) if crypt: if crypt == "installed-but-failed": assert run.failure else: assert run.success assert run.out.strip() == "ext-crypt ran" assert run.err == "" else: assert run.failure assert f"command '{pgm}' cannot be located" in run.err