Testing: create mock executable fixture (#16999)

This commit is contained in:
Massimiliano Culpo 2020-06-09 20:00:23 +02:00 committed by GitHub
parent 2421d903b0
commit 25a837bf79
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 9 deletions

View File

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

View File

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