#!/usr/bin/env python # Copyright 2017 the V8 project authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """ Legacy test-runner wrapper supporting a product of multiple architectures and modes. """ import argparse import itertools from os.path import abspath, dirname, join import subprocess import sys BASE_DIR = dirname(dirname(abspath(__file__))) RUN_TESTS = join(BASE_DIR, 'tools', 'run-tests.py') def main(): parser = argparse.ArgumentParser(description='Legacy test-runner wrapper') parser.add_argument( '--arch', help='Comma-separated architectures to run tests on') parser.add_argument( '--mode', help='Comma-separated modes to run tests on') parser.add_argument( '--arch-and-mode', help='Architecture and mode in the format \'arch.mode\'', ) args, remaining_args = parser.parse_known_args(sys.argv) if (args.arch or args.mode) and args.arch_and_mode: parser.error('The flags --arch-and-mode and --arch/--mode are exclusive.') arch = (args.arch or 'ia32,x64,arm').split(',') mode = (args.mode or 'release,debug').split(',') if args.arch_and_mode: arch_and_mode = map( lambda am: am.split('.'), args.arch_and_mode.split(',')) arch = map(lambda am: am[0], arch_and_mode) mode = map(lambda am: am[1], arch_and_mode) ret_code = 0 for a, m in itertools.product(arch, mode): ret_code |= subprocess.check_call( [RUN_TESTS] + remaining_args[1:] + ['--arch', a, '--mode', m]) return ret_code if __name__ == '__main__': sys.exit(main())