diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index ae8fa80ab76..bac5bcebf60 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -1099,3 +1099,20 @@ def clear_directive_functions(): # proceeding with subsequent tests that may depend on the original # functions. spack.directives.DirectiveMeta._directives_to_be_executed = [] + + +@pytest.fixture +def mock_executable(tmpdir): + """Factory to create a mock executable in a temporary directory that + output a custom string when run. + """ + import jinja2 + + def _factory(name, output, subdir=('bin',)): + f = tmpdir.mkdir(*subdir).join(name) + t = jinja2.Template('#!/bin/bash\n{{ output }}\n') + f.write(t.render(output=output)) + f.chmod(0o755) + return str(f) + + return _factory diff --git a/lib/spack/spack/test/relocate.py b/lib/spack/spack/test/relocate.py index 6669b25eb41..551f1596f7b 100644 --- a/lib/spack/spack/test/relocate.py +++ b/lib/spack/spack/test/relocate.py @@ -107,16 +107,9 @@ def do_install_mock(self, **kwargs): @pytest.fixture() -def mock_patchelf(tmpdir): - import jinja2 - +def mock_patchelf(tmpdir, mock_executable): def _factory(output): - f = tmpdir.mkdir('bin').join('patchelf') - t = jinja2.Template('#!/bin/bash\n{{ output }}\n') - f.write(t.render(output=output)) - f.chmod(0o755) - return str(f) - + return mock_executable('patchelf', output=output) return _factory