"""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