diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2016-12-26 20:56:04 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2017-01-02 23:52:50 +0200 |
commit | ee8a6e6fc5b58b5756f4e01271e77399f2d973bb (patch) | |
tree | b10b93b2b28e1135a3e87b4f127198786e596896 /mesontest.py | |
parent | 776b0d9a5f425d0363b8b71933f990183ca4a281 (diff) | |
download | meson-ee8a6e6fc5b58b5756f4e01271e77399f2d973bb.zip meson-ee8a6e6fc5b58b5756f4e01271e77399f2d973bb.tar.gz meson-ee8a6e6fc5b58b5756f4e01271e77399f2d973bb.tar.bz2 |
Can specify test setups and run them with mesontest.
Diffstat (limited to 'mesontest.py')
-rwxr-xr-x | mesontest.py | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/mesontest.py b/mesontest.py index ecf1b41..01ed056 100755 --- a/mesontest.py +++ b/mesontest.py @@ -69,7 +69,7 @@ parser.add_argument('--suite', default=None, dest='suite', parser.add_argument('--no-stdsplit', default=True, dest='split', action='store_false', help='Do not split stderr and stdout in test logs.') parser.add_argument('--print-errorlogs', default=False, action='store_true', - help="Whether to print faling tests' logs.") + help="Whether to print failing tests' logs.") parser.add_argument('--benchmark', default=False, action='store_true', help="Run benchmarks instead of tests.") parser.add_argument('--logbase', default='testlog', @@ -82,6 +82,8 @@ parser.add_argument('-t', '--timeout-multiplier', type=float, default=1.0, help='Define a multiplier for test timeout, for example ' ' when running tests in particular conditions they might take' ' more time to execute.') +parser.add_argument('--setup', default=None, dest='setup', + help='Which test setup to use.') parser.add_argument('args', nargs='*') class TestRun(): @@ -328,7 +330,11 @@ class TestHarness: logfilename = logfile_base + '.txt' jsonlogfilename = logfile_base + '.json' else: - wrap = self.options.wrapper.split() + if isinstance(self.options.wrapper, str): + wrap = self.options.wrapper.split() + else: + wrap = self.options.wrapper + assert(isinstance(wrap, list)) namebase = wrap[0] logfilename = logfile_base + '-' + namebase.replace(' ', '_') + '.txt' jsonlogfilename = logfile_base + '-' + namebase.replace(' ', '_') + '.json' @@ -453,11 +459,33 @@ def filter_tests(suite, tests): return [x for x in tests if suite in x.suite] +def merge_suite_options(options): + buildfile = os.path.join(options.wd, 'meson-private/build.dat') + with open(buildfile, 'rb') as f: + build = pickle.load(f) + setups = build.test_setups + if options.setup not in setups: + sys.exit('Unknown test setup: %s' % options.setup) + current = setups[options.setup] + if not options.gdb: + options.gdb = current.gdb + if options.timeout_multiplier is None: + options.timeout_multiplier = current.timeout_multiplier +# if options.env is None: +# options.env = current.env # FIXME, should probably merge options here. + if options.wrapper is not None and current.exe_wrapper is not None: + sys.exit('Conflict: both test setup and command line specify an exe wrapper.') + if options.wrapper is None: + options.wrapper = current.exe_wrapper + def run(args): options = parser.parse_args(args) if options.benchmark: options.num_processes = 1 + if options.setup is not None: + merge_suite_options(options) + if options.gdb: options.verbose = True |