aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-01-02 18:31:58 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2017-01-02 23:52:50 +0200
commitb3d51abff20b36e8d0604eaf9e482c509e54f311 (patch)
treed68930595821188bb57cc67775205d39d63606ef
parent74f15263b6a9d7fe1f717235a7177e7e4a681d3d (diff)
downloadmeson-b3d51abff20b36e8d0604eaf9e482c509e54f311.zip
meson-b3d51abff20b36e8d0604eaf9e482c509e54f311.tar.gz
meson-b3d51abff20b36e8d0604eaf9e482c509e54f311.tar.bz2
Can put external programs to test suite exe wrappers directly.
-rw-r--r--mesonbuild/interpreter.py16
-rwxr-xr-xmesontest.py2
-rw-r--r--test cases/unit/2 testsetups/meson.build4
3 files changed, 18 insertions, 4 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index fb1ff20..eda6f07 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2150,7 +2150,21 @@ requirements use the version keyword argument instead.''')
if re.fullmatch('[_a-zA-Z][_0-9a-zA-Z]*', setup_name) is None:
raise InterpreterException('Setup name may only contain alphanumeric characters.')
try:
- exe_wrapper = mesonlib.stringlistify(kwargs['exe_wrapper'])
+ inp = kwargs.get('exe_wrapper', [])
+ if not isinstance(inp, list):
+ inp = [inp]
+ exe_wrapper = []
+ for i in inp:
+ if hasattr(i, 'held_object'):
+ i = i.held_object
+ if isinstance(i, str):
+ exe_wrapper.append(i)
+ elif isinstance(i, dependencies.ExternalProgram):
+ if not i.found():
+ raise InterpreterException('Tried to use non-found external executable.')
+ exe_wrapper += i.get_command()
+ else:
+ raise InterpreterException('Exe wrapper can only contain strings or external binaries.')
except KeyError:
exe_wrapper = None
gdb = kwargs.get('gdb', False)
diff --git a/mesontest.py b/mesontest.py
index 6a8291c..c7c60c0 100755
--- a/mesontest.py
+++ b/mesontest.py
@@ -336,7 +336,7 @@ class TestHarness:
else:
wrap = self.options.wrapper
assert(isinstance(wrap, list))
- namebase = wrap[0]
+ namebase = os.path.split(wrap[0])[1]
logfilename = logfile_base + '-' + namebase.replace(' ', '_') + '.txt'
jsonlogfilename = logfile_base + '-' + namebase.replace(' ', '_') + '.json'
tests = self.get_tests()
diff --git a/test cases/unit/2 testsetups/meson.build b/test cases/unit/2 testsetups/meson.build
index 23682a7..a65548e 100644
--- a/test cases/unit/2 testsetups/meson.build
+++ b/test cases/unit/2 testsetups/meson.build
@@ -1,13 +1,13 @@
project('testsetups', 'c')
-vg = find_program('valgrind', required : false)
+vg = find_program('valgrind')
# This is only set when running under Valgrind test setup.
env = environment()
env.set('TEST_ENV', '1')
add_test_setup('valgrind',
- exe_wrapper : ['valgrind', '--error-exitcode=1', '--leak-check=full'],
+ exe_wrapper : [vg, '--error-exitcode=1', '--leak-check=full'],
timeout_multiplier : 100,
env : env)