aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/build.py4
-rw-r--r--mesonbuild/interpreter.py7
-rw-r--r--mesonbuild/mtest.py26
3 files changed, 23 insertions, 14 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 65af0d6..5adbc51 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -2617,11 +2617,13 @@ class Data:
class TestSetup:
def __init__(self, exe_wrapper: T.Optional[T.List[str]], gdb: bool,
- timeout_multiplier: int, env: EnvironmentVariables):
+ timeout_multiplier: int, env: EnvironmentVariables,
+ exclude_suites: T.List[str]):
self.exe_wrapper = exe_wrapper
self.gdb = gdb
self.timeout_multiplier = timeout_multiplier
self.env = env
+ self.exclude_suites = exclude_suites
def get_sources_string_names(sources, backend):
'''
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 0ce0fe8..586e94e 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2300,7 +2300,8 @@ permitted_kwargs = {'add_global_arguments': {'language', 'native'},
'add_languages': {'required', 'native'},
'add_project_link_arguments': {'language', 'native'},
'add_project_arguments': {'language', 'native'},
- 'add_test_setup': {'exe_wrapper', 'gdb', 'timeout_multiplier', 'env', 'is_default'},
+ 'add_test_setup': {'exe_wrapper', 'gdb', 'timeout_multiplier', 'env', 'is_default',
+ 'exclude_suites'},
'benchmark': _base_test_args,
'build_target': known_build_target_kwargs,
'configure_file': {'input',
@@ -4687,8 +4688,10 @@ different subdirectory.
raise InterpreterException('\'%s\' is already set as default. '
'is_default can be set to true only once' % self.build.test_setup_default_name)
self.build.test_setup_default_name = setup_name
+ exclude_suites = mesonlib.stringlistify(kwargs.get('exclude_suites', []))
env = self.unpack_env_kwarg(kwargs)
- self.build.test_setups[setup_name] = build.TestSetup(exe_wrapper, gdb, timeout_multiplier, env)
+ self.build.test_setups[setup_name] = build.TestSetup(exe_wrapper, gdb, timeout_multiplier, env,
+ exclude_suites)
@permittedKwargs(permitted_kwargs['add_global_arguments'])
@stringArgs
diff --git a/mesonbuild/mtest.py b/mesonbuild/mtest.py
index d212cf0..79bb075 100644
--- a/mesonbuild/mtest.py
+++ b/mesonbuild/mtest.py
@@ -1654,9 +1654,20 @@ class TestHarness:
return False
def test_suitable(self, test: TestSerialisation) -> bool:
- return ((not self.options.include_suites or
- TestHarness.test_in_suites(test, self.options.include_suites)) and not
- TestHarness.test_in_suites(test, self.options.exclude_suites))
+ if TestHarness.test_in_suites(test, self.options.exclude_suites):
+ return False
+
+ if self.options.include_suites:
+ # Both force inclusion (overriding add_test_setup) and exclude
+ # everything else
+ return TestHarness.test_in_suites(test, self.options.include_suites)
+
+ if self.options.setup:
+ setup = self.get_test_setup(test)
+ if TestHarness.test_in_suites(test, setup.exclude_suites):
+ return False
+
+ return True
def tests_from_args(self, tests: T.List[TestSerialisation]) -> T.Generator[TestSerialisation, None, None]:
'''
@@ -1685,14 +1696,7 @@ class TestHarness:
print('No tests defined.')
return []
- if self.options.include_suites or self.options.exclude_suites:
- tests = []
- for tst in self.tests:
- if self.test_suitable(tst):
- tests.append(tst)
- else:
- tests = self.tests
-
+ tests = [t for t in self.tests if self.test_suitable(t)]
if self.options.args:
tests = list(self.tests_from_args(tests))