aboutsummaryrefslogtreecommitdiff
path: root/ninjabackend.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2015-12-09 18:00:06 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2015-12-09 18:00:06 +0200
commit70695bead40f97825357e620394918d1a248bf1a (patch)
treed439f53a5d954307f438aac7c29f9ca051503583 /ninjabackend.py
parent0585a959d3bc7e71c896d53ed4f9c74ba49f4825 (diff)
downloadmeson-70695bead40f97825357e620394918d1a248bf1a.zip
meson-70695bead40f97825357e620394918d1a248bf1a.tar.gz
meson-70695bead40f97825357e620394918d1a248bf1a.tar.bz2
Added possibility to have multiple test suites so you can run only a subset of tests. Closes #325.
Diffstat (limited to 'ninjabackend.py')
-rw-r--r--ninjabackend.py21
1 files changed, 20 insertions, 1 deletions
diff --git a/ninjabackend.py b/ninjabackend.py
index 7d72e06..f614923 100644
--- a/ninjabackend.py
+++ b/ninjabackend.py
@@ -528,6 +528,24 @@ class NinjaBackend(backends.Backend):
dst_dir = os.path.join(self.environment.get_prefix(), sd.install_dir)
d.install_subdirs.append([src_dir, dst_dir])
+ def write_test_suite_targets(self, cmd, outfile):
+ suites = {}
+ for t in self.build.get_tests():
+ suites[t.suite] = True
+ suites = list(suites.keys())
+ suites.sort()
+ for s in suites:
+ if s == '':
+ visible_name = 'for top level tests'
+ else:
+ visible_name = s
+ elem = NinjaBuildElement('test-' + s, 'CUSTOM_COMMAND', ['all', 'PHONY'])
+ elem.add_item('COMMAND', cmd + ['--suite=' + s])
+ elem.add_item('DESC', 'Running test suite %s.' % visible_name)
+ elem.add_item('pool', 'console')
+ elem.write(outfile)
+ self.check_outputs(elem)
+
def generate_tests(self, outfile):
self.serialise_tests()
valgrind = environment.find_valgrind()
@@ -537,10 +555,11 @@ class NinjaBackend(backends.Backend):
cmd = [sys.executable, test_script, test_data]
elem = NinjaBuildElement('test', 'CUSTOM_COMMAND', ['all', 'PHONY'])
elem.add_item('COMMAND', cmd)
- elem.add_item('DESC', 'Running test suite.')
+ elem.add_item('DESC', 'Running all tests.')
elem.add_item('pool', 'console')
elem.write(outfile)
self.check_outputs(elem)
+ self.write_test_suite_targets(cmd, outfile)
if valgrind:
velem = NinjaBuildElement('test-valgrind', 'CUSTOM_COMMAND', ['all', 'PHONY'])