| #!/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()) |