| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # | 2 # |
| 3 # Copyright 2012 the V8 project authors. All rights reserved. | 3 # Copyright 2012 the V8 project authors. All rights reserved. |
| 4 # Redistribution and use in source and binary forms, with or without | 4 # Redistribution and use in source and binary forms, with or without |
| 5 # modification, are permitted provided that the following conditions are | 5 # modification, are permitted provided that the following conditions are |
| 6 # met: | 6 # met: |
| 7 # | 7 # |
| 8 # * Redistributions of source code must retain the above copyright | 8 # * Redistributions of source code must retain the above copyright |
| 9 # notice, this list of conditions and the following disclaimer. | 9 # notice, this list of conditions and the following disclaimer. |
| 10 # * Redistributions in binary form must reproduce the above | 10 # * Redistributions in binary form must reproduce the above |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 from testrunner.local import progress | 45 from testrunner.local import progress |
| 46 from testrunner.local import testsuite | 46 from testrunner.local import testsuite |
| 47 from testrunner.local.testsuite import ALL_VARIANTS | 47 from testrunner.local.testsuite import ALL_VARIANTS |
| 48 from testrunner.local import utils | 48 from testrunner.local import utils |
| 49 from testrunner.local import verbose | 49 from testrunner.local import verbose |
| 50 from testrunner.network import network_execution | 50 from testrunner.network import network_execution |
| 51 from testrunner.objects import context | 51 from testrunner.objects import context |
| 52 | 52 |
| 53 | 53 |
| 54 ARCH_GUESS = utils.DefaultArch() | 54 ARCH_GUESS = utils.DefaultArch() |
| 55 DEFAULT_TESTS = [ | |
| 56 "mjsunit", | |
| 57 "unittests", | |
| 58 "cctest", | |
| 59 "message", | |
| 60 "preparser", | |
| 61 "intl", | |
| 62 ] | |
| 63 | 55 |
| 64 # Map of test name synonyms to lists of test suites. Should be ordered by | 56 # Map of test name synonyms to lists of test suites. Should be ordered by |
| 65 # expected runtimes (suites with slow test cases first). These groups are | 57 # expected runtimes (suites with slow test cases first). These groups are |
| 66 # invoked in seperate steps on the bots. | 58 # invoked in seperate steps on the bots. |
| 67 TEST_MAP = { | 59 TEST_MAP = { |
| 68 "default": [ | 60 "default": [ |
| 69 "mjsunit", | 61 "mjsunit", |
| 70 "cctest", | 62 "cctest", |
| 71 "message", | 63 "message", |
| 72 "preparser", | 64 "preparser", |
| 73 "intl", | 65 "intl", |
| 66 "unittests", |
| 74 ], | 67 ], |
| 75 "optimize_for_size": [ | 68 "optimize_for_size": [ |
| 76 "mjsunit", | 69 "mjsunit", |
| 77 "cctest", | 70 "cctest", |
| 78 "webkit", | 71 "webkit", |
| 79 "intl", | 72 "intl", |
| 80 ], | 73 ], |
| 81 "unittests": [ | 74 "unittests": [ |
| 82 "unittests", | 75 "unittests", |
| 83 ], | 76 ], |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 "mips64el", | 163 "mips64el", |
| 171 "nacl_ia32", | 164 "nacl_ia32", |
| 172 "nacl_x64", | 165 "nacl_x64", |
| 173 "x87", | 166 "x87", |
| 174 "arm64"] | 167 "arm64"] |
| 175 | 168 |
| 176 | 169 |
| 177 def BuildOptions(): | 170 def BuildOptions(): |
| 178 result = optparse.OptionParser() | 171 result = optparse.OptionParser() |
| 179 result.usage = '%prog [options] [tests]' | 172 result.usage = '%prog [options] [tests]' |
| 180 result.description = """TESTS: %s""" % (DEFAULT_TESTS) | 173 result.description = """TESTS: %s""" % (TEST_MAP["default"]) |
| 181 result.add_option("--arch", | 174 result.add_option("--arch", |
| 182 help=("The architecture to run tests for, " | 175 help=("The architecture to run tests for, " |
| 183 "'auto' or 'native' for auto-detect: %s" % SUPPORTED_A
RCHS), | 176 "'auto' or 'native' for auto-detect: %s" % SUPPORTED_A
RCHS), |
| 184 default="ia32,x64,arm") | 177 default="ia32,x64,arm") |
| 185 result.add_option("--arch-and-mode", | 178 result.add_option("--arch-and-mode", |
| 186 help="Architecture and mode in the format 'arch.mode'", | 179 help="Architecture and mode in the format 'arch.mode'", |
| 187 default=None) | 180 default=None) |
| 188 result.add_option("--asan", | 181 result.add_option("--asan", |
| 189 help="Regard test expectations for ASAN", | 182 help="Regard test expectations for ASAN", |
| 190 default=False, action="store_true") | 183 default=False, action="store_true") |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 print "Unknown %s mode %s" % (name, option) | 447 print "Unknown %s mode %s" % (name, option) |
| 455 return False | 448 return False |
| 456 return True | 449 return True |
| 457 if not CheckTestMode("flaky test", options.flaky_tests): | 450 if not CheckTestMode("flaky test", options.flaky_tests): |
| 458 return False | 451 return False |
| 459 if not CheckTestMode("slow test", options.slow_tests): | 452 if not CheckTestMode("slow test", options.slow_tests): |
| 460 return False | 453 return False |
| 461 if not CheckTestMode("pass|fail test", options.pass_fail_tests): | 454 if not CheckTestMode("pass|fail test", options.pass_fail_tests): |
| 462 return False | 455 return False |
| 463 if options.no_i18n: | 456 if options.no_i18n: |
| 464 DEFAULT_TESTS.remove("intl") | |
| 465 TEST_MAP["default"].remove("intl") | 457 TEST_MAP["default"].remove("intl") |
| 466 return True | 458 return True |
| 467 | 459 |
| 468 | 460 |
| 469 def ShardTests(tests, shard_count, shard_run): | 461 def ShardTests(tests, shard_count, shard_run): |
| 470 if shard_count < 2: | 462 if shard_count < 2: |
| 471 return tests | 463 return tests |
| 472 if shard_run < 1 or shard_run > shard_count: | 464 if shard_run < 1 or shard_run > shard_count: |
| 473 print "shard-run not a valid number, should be in [1:shard-count]" | 465 print "shard-run not a valid number, should be in [1:shard-count]" |
| 474 print "defaulting back to running all tests" | 466 print "defaulting back to running all tests" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 491 | 483 |
| 492 exit_code = 0 | 484 exit_code = 0 |
| 493 workspace = os.path.abspath(join(os.path.dirname(sys.argv[0]), "..")) | 485 workspace = os.path.abspath(join(os.path.dirname(sys.argv[0]), "..")) |
| 494 if not options.no_presubmit: | 486 if not options.no_presubmit: |
| 495 print ">>> running presubmit tests" | 487 print ">>> running presubmit tests" |
| 496 exit_code = subprocess.call( | 488 exit_code = subprocess.call( |
| 497 [sys.executable, join(workspace, "tools", "presubmit.py")]) | 489 [sys.executable, join(workspace, "tools", "presubmit.py")]) |
| 498 | 490 |
| 499 suite_paths = utils.GetSuitePaths(join(workspace, "test")) | 491 suite_paths = utils.GetSuitePaths(join(workspace, "test")) |
| 500 | 492 |
| 493 # Use default tests if no test configuration was provided at the cmd line. |
| 494 if len(args) == 0: |
| 495 args = ["default"] |
| 496 |
| 501 # Expand arguments with grouped tests. The args should reflect the list of | 497 # Expand arguments with grouped tests. The args should reflect the list of |
| 502 # suites as otherwise filters would break. | 498 # suites as otherwise filters would break. |
| 503 def ExpandTestGroups(name): | 499 def ExpandTestGroups(name): |
| 504 if name in TEST_MAP: | 500 if name in TEST_MAP: |
| 505 return [suite for suite in TEST_MAP[arg]] | 501 return [suite for suite in TEST_MAP[arg]] |
| 506 else: | 502 else: |
| 507 return [name] | 503 return [name] |
| 508 args = reduce(lambda x, y: x + y, | 504 args = reduce(lambda x, y: x + y, |
| 509 [ExpandTestGroups(arg) for arg in args], | 505 [ExpandTestGroups(arg) for arg in args], |
| 510 []) | 506 []) |
| 511 | 507 |
| 512 if len(args) == 0: | 508 args_suites = OrderedDict() # Used as set |
| 513 suite_paths = [ s for s in DEFAULT_TESTS if s in suite_paths ] | 509 for arg in args: |
| 514 else: | 510 args_suites[arg.split('/')[0]] = True |
| 515 args_suites = OrderedDict() # Used as set | 511 suite_paths = [ s for s in args_suites if s in suite_paths ] |
| 516 for arg in args: | |
| 517 args_suites[arg.split('/')[0]] = True | |
| 518 suite_paths = [ s for s in args_suites if s in suite_paths ] | |
| 519 | 512 |
| 520 suites = [] | 513 suites = [] |
| 521 for root in suite_paths: | 514 for root in suite_paths: |
| 522 suite = testsuite.TestSuite.LoadTestSuite( | 515 suite = testsuite.TestSuite.LoadTestSuite( |
| 523 os.path.join(workspace, "test", root)) | 516 os.path.join(workspace, "test", root)) |
| 524 if suite: | 517 if suite: |
| 525 suites.append(suite) | 518 suites.append(suite) |
| 526 | 519 |
| 527 if options.download_data or options.download_data_only: | 520 if options.download_data or options.download_data_only: |
| 528 for s in suites: | 521 for s in suites: |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 711 verbose.PrintTestDurations(suites, overall_duration) | 704 verbose.PrintTestDurations(suites, overall_duration) |
| 712 | 705 |
| 713 if num_tests == 0: | 706 if num_tests == 0: |
| 714 print("Warning: no tests were run!") | 707 print("Warning: no tests were run!") |
| 715 | 708 |
| 716 return exit_code | 709 return exit_code |
| 717 | 710 |
| 718 | 711 |
| 719 if __name__ == "__main__": | 712 if __name__ == "__main__": |
| 720 sys.exit(Main()) | 713 sys.exit(Main()) |
| OLD | NEW |