summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/test/conftest.py17
-rw-r--r--lib/spack/spack/test/relocate.py11
2 files changed, 19 insertions, 9 deletions
diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py
index ae8fa80ab7..bac5bcebf6 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 6669b25eb4..551f1596f7 100644
--- a/lib/spack/spack/test/relocate.py
+++ b/lib/spack/spack/test/relocate.py
@@ -107,16 +107,9 @@ def expected_patchelf_path(request, mutable_database, monkeypatch):
@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