From ee8a6e6fc5b58b5756f4e01271e77399f2d973bb Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Mon, 26 Dec 2016 20:56:04 +0200 Subject: Can specify test setups and run them with mesontest. --- mesontest.py | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) (limited to 'mesontest.py') 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 -- cgit v1.1 From 74f15263b6a9d7fe1f717235a7177e7e4a681d3d Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Mon, 26 Dec 2016 21:29:09 +0200 Subject: Can set envvars in test setups. --- mesontest.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'mesontest.py') diff --git a/mesontest.py b/mesontest.py index 01ed056..6a8291c 100755 --- a/mesontest.py +++ b/mesontest.py @@ -208,6 +208,7 @@ class TestHarness: cmd = wrap + cmd + test.cmd_args starttime = time.time() child_env = os.environ.copy() + child_env.update(self.options.global_env.get_env(child_env)) if isinstance(test.env, build.EnvironmentVariables): test.env = test.env.get_env(child_env) @@ -477,6 +478,7 @@ def merge_suite_options(options): sys.exit('Conflict: both test setup and command line specify an exe wrapper.') if options.wrapper is None: options.wrapper = current.exe_wrapper + return current.env def run(args): options = parser.parse_args(args) @@ -484,7 +486,11 @@ def run(args): options.num_processes = 1 if options.setup is not None: - merge_suite_options(options) + global_env = merge_suite_options(options) + else: + global_env = build.EnvironmentVariables() + + setattr(options, 'global_env', global_env) if options.gdb: options.verbose = True -- cgit v1.1 From b3d51abff20b36e8d0604eaf9e482c509e54f311 Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Mon, 2 Jan 2017 18:31:58 +0200 Subject: Can put external programs to test suite exe wrappers directly. --- mesontest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mesontest.py') diff --git a/mesontest.py b/mesontest.py index 6a8291c..c7c60c0 100755 --- a/mesontest.py +++ b/mesontest.py @@ -336,7 +336,7 @@ class TestHarness: else: wrap = self.options.wrapper assert(isinstance(wrap, list)) - namebase = wrap[0] + namebase = os.path.split(wrap[0])[1] logfilename = logfile_base + '-' + namebase.replace(' ', '_') + '.txt' jsonlogfilename = logfile_base + '-' + namebase.replace(' ', '_') + '.json' tests = self.get_tests() -- cgit v1.1