Index: tools/run-tests.py |
diff --git a/tools/run-tests.py b/tools/run-tests.py |
index b1c71dd0a76d7e12222dbf85a2465ab4e5dd1075..09f301854a46a1006d949d26c103e5f8b2572720 100755 |
--- a/tools/run-tests.py |
+++ b/tools/run-tests.py |
@@ -30,6 +30,7 @@ |
from collections import OrderedDict |
import itertools |
+import json |
import multiprocessing |
import optparse |
import os |
@@ -434,6 +435,34 @@ def ProcessOptions(options): |
global EXHAUSTIVE_VARIANTS |
global VARIANTS |
+ # First try to auto-detect configurations based on the build if GN was |
+ # used. This can't be overridden by cmd-line arguments. |
+ options.auto_detect = False |
+ build_config_path = os.path.join( |
+ BASE_DIR, options.outdir, "v8_build_config.json") |
+ if os.path.exists(build_config_path): |
+ try: |
+ with open(build_config_path) as f: |
+ build_config = json.load(f) |
+ except Exception: |
+ print ("%s exists but contains invalid json. Is your build up-to-date?" % |
+ build_config_path) |
+ return False |
+ options.auto_detect = True |
+ |
+ options.arch_and_mode = None |
+ options.arch = build_config["v8_target_cpu"] |
+ if options.arch == 'x86': |
+ # TODO(machenbach): Transform all to x86 eventually. |
+ options.arch = 'ia32' |
+ options.asan = build_config["is_asan"] |
+ options.dcheck_always_on = build_config["dcheck_always_on"] |
+ options.mode = 'debug' if build_config["is_debug"] else 'release' |
+ options.msan = build_config["is_msan"] |
+ options.no_i18n = not build_config["v8_enable_i18n_support"] |
+ options.no_snap = not build_config["v8_use_snapshot"] |
+ options.tsan = build_config["is_tsan"] |
+ |
# Architecture and mode related stuff. |
if options.arch_and_mode: |
options.arch_and_mode = [arch_and_mode.split(".") |
@@ -667,6 +696,10 @@ def Execute(arch, mode, args, options, suites): |
# buildbot. Currently this is capitalized Release and Debug. |
shell_dir = os.path.join(BASE_DIR, options.outdir, mode) |
mode = BuildbotToV8Mode(mode) |
+ elif options.auto_detect: |
+ # If an output dir with a build was passed, test directly in that |
+ # directory. |
+ shell_dir = os.path.join(BASE_DIR, options.outdir) |
else: |
shell_dir = os.path.join( |
BASE_DIR, |
@@ -712,6 +745,8 @@ def Execute(arch, mode, args, options, suites): |
sancov_dir=options.sancov_dir) |
# TODO(all): Combine "simulator" and "simulator_run". |
+ # TODO(machenbach): In GN we can derive simulator run from |
+ # target_arch != v8_target_arch in the dumped build config. |
simulator_run = not options.dont_skip_simulator_slow_tests and \ |
arch in ['arm64', 'arm', 'mipsel', 'mips', 'mips64', 'mips64el', \ |
'ppc', 'ppc64'] and \ |