aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-08-28 01:45:11 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2016-11-18 22:04:29 +0200
commitee90ce74e8b585b210ab5df3709444db269b875d (patch)
tree197ec6f28d5f648913921cbeadab5363cbd5dd8d
parent621219ccb0b0130f2146e32ccdc22db803b2bb09 (diff)
downloadmeson-ee90ce74e8b585b210ab5df3709444db269b875d.zip
meson-ee90ce74e8b585b210ab5df3709444db269b875d.tar.gz
meson-ee90ce74e8b585b210ab5df3709444db269b875d.tar.bz2
New test runner.
-rwxr-xr-xmesonbuild/scripts/meson_benchmark.py2
-rwxr-xr-xmesontest.py63
2 files changed, 64 insertions, 1 deletions
diff --git a/mesonbuild/scripts/meson_benchmark.py b/mesonbuild/scripts/meson_benchmark.py
index 6d138b0..9029c21 100755
--- a/mesonbuild/scripts/meson_benchmark.py
+++ b/mesonbuild/scripts/meson_benchmark.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
-# Copyright 2015 The Meson development team
+# Copyright 2015-2016 The Meson development team
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/mesontest.py b/mesontest.py
new file mode 100755
index 0000000..aa7a3b6
--- /dev/null
+++ b/mesontest.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python3
+
+# Copyright 2016 The Meson development team
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# A tool to run tests in many different ways.
+
+import subprocess, sys, os, argparse
+import pickle, statistics, json
+from mesonbuild.scripts import meson_test
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--repeat', default=1, dest='repeat', type=int,
+ help='Number of times to run the tests.')
+parser.add_argument('--wrapper', default='', dest='wrapper',
+ help='Exe wrapper (such as Valgrind) to use')
+parser.add_argument('--gdb', default=False, dest='gdb', action='store_true',
+ help='Run test under gdb.')
+parser.add_argument('--list', default=False, dest='list', action='store_true',
+ help='List available tests.')
+parser.add_argument('tests', nargs='*')
+
+def run(args):
+ datafile = 'meson-private/meson_test_setup.dat'
+ options = parser.parse_args(args)
+ if options.wrapper != '':
+ wrap = options.wrapper.split(' ')
+ else:
+ wrap = []
+ if options.gdb and len(options.wrapper) > 0:
+ print('Can not specify both a wrapper and gdb.')
+ return 1
+ tests = pickle.load(open(datafile, 'rb'))
+ if options.list:
+ for i in tests:
+ print(i.name)
+ return 0
+ for t in tests:
+ if t.name in options.tests:
+ for i in range(options.repeat):
+ print('Running: %s %d/%d' % (t.name, i+1, options.repeat))
+ res = meson_test.run_single_test(wrap, t)
+ if (res.returncode == 0 and res.should_fail) or \
+ (res.returncode != 0 and not res.should_fail):
+ print(res.stdo)
+ print(res.stde)
+ print(res.returncode)
+ print(res.should_fail)
+ raise RuntimeError('Test failed.')
+
+if __name__ == '__main__':
+ sys.exit(run(sys.argv[1:]))