aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2018-02-27 21:40:32 +0200
committerGitHub <noreply@github.com>2018-02-27 21:40:32 +0200
commit59e7ea169f3d875b2dfefc0d7a41a2ea9eca08f0 (patch)
tree2bc543667d64e910b34be00fe7847fb6dbb3e8ab /mesonbuild/interpreter.py
parent16f80b4c506bba9839e30bd98fcbbafddcef3632 (diff)
parent4f8db1fe47056fa650236c9c89ddd4814a271174 (diff)
downloadmeson-59e7ea169f3d875b2dfefc0d7a41a2ea9eca08f0.zip
meson-59e7ea169f3d875b2dfefc0d7a41a2ea9eca08f0.tar.gz
meson-59e7ea169f3d875b2dfefc0d7a41a2ea9eca08f0.tar.bz2
Merge pull request #2311 from trhd/setups
Improve test setup selection.
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py29
1 files changed, 13 insertions, 16 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 5c333a8..e3680ac 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -653,10 +653,11 @@ class RunTargetHolder(InterpreterObject, ObjectHolder):
return r.format(self.__class__.__name__, h.get_id(), h.command)
class Test(InterpreterObject):
- def __init__(self, name, suite, exe, is_parallel, cmd_args, env, should_fail, timeout, workdir):
+ def __init__(self, name, project, suite, exe, is_parallel, cmd_args, env, should_fail, timeout, workdir):
InterpreterObject.__init__(self)
self.name = name
self.suite = suite
+ self.project_name = project
self.exe = exe
self.is_parallel = is_parallel
self.cmd_args = cmd_args
@@ -2169,7 +2170,7 @@ to directly access options of other subprojects.''')
if progobj is None:
progobj = self.program_from_system(args)
if required and (progobj is None or not progobj.found()):
- raise InvalidArguments('Program "%s" not found or not executable' % args[0])
+ raise InvalidArguments('Program(s) {!r} not found or not executable'.format(args))
if progobj is None:
return ExternalProgramHolder(dependencies.NonExistingExternalProgram())
return progobj
@@ -2586,14 +2587,12 @@ root and issuing %s.
if not isinstance(timeout, int):
raise InterpreterException('Timeout must be an integer.')
suite = []
+ prj = self.subproject if self.is_subproject() else self.build.project_name
for s in mesonlib.stringlistify(kwargs.get('suite', '')):
if len(s) > 0:
s = ':' + s
- if self.is_subproject():
- suite.append(self.subproject.replace(' ', '_').replace(':', '_') + s)
- else:
- suite.append(self.build.project_name.replace(' ', '_').replace(':', '_') + s)
- t = Test(args[0], suite, exe.held_object, par, cmd_args, env, should_fail, timeout, workdir)
+ suite.append(prj.replace(' ', '_').replace(':', '_') + s)
+ t = Test(args[0], prj, suite, exe.held_object, par, cmd_args, env, should_fail, timeout, workdir)
if is_base_test:
self.build.tests.append(t)
mlog.debug('Adding test "', mlog.bold(args[0]), '".', sep='')
@@ -2892,8 +2891,10 @@ different subdirectory.
if len(args) != 1:
raise InterpreterException('Add_test_setup needs one argument for the setup name.')
setup_name = args[0]
- if re.fullmatch('[_a-zA-Z][_0-9a-zA-Z]*', setup_name) is None:
+ if re.fullmatch('([_a-zA-Z][_0-9a-zA-Z]*:)?[_a-zA-Z][_0-9a-zA-Z]*', setup_name) is None:
raise InterpreterException('Setup name may only contain alphanumeric characters.')
+ if ":" not in setup_name:
+ setup_name = (self.subproject if self.subproject else self.build.project_name) + ":" + setup_name
try:
inp = extract_as_list(kwargs, 'exe_wrapper')
exe_wrapper = []
@@ -2917,14 +2918,10 @@ different subdirectory.
if not isinstance(timeout_multiplier, int):
raise InterpreterException('Timeout multiplier must be a number.')
env = self.unpack_env_kwarg(kwargs)
- setupobj = build.TestSetup(exe_wrapper=exe_wrapper,
- gdb=gdb,
- timeout_multiplier=timeout_multiplier,
- env=env)
- if self.subproject == '':
- # Dunno what we should do with subprojects really. Let's start simple
- # and just use the master project ones.
- self.build.test_setups[setup_name] = setupobj
+ self.build.test_setups[setup_name] = build.TestSetup(exe_wrapper=exe_wrapper,
+ gdb=gdb,
+ timeout_multiplier=timeout_multiplier,
+ env=env)
@permittedKwargs(permitted_kwargs['add_global_arguments'])
@stringArgs