Commit 0a35d6f9 authored by Michael Achenbach's avatar Michael Achenbach Committed by Commit Bot

[test] Let flags from test case have precedence

The status-file flags and the flags from the test case's source code
must always overwrite extra flags set by bots.

Bug: v8:6924
Cq-Include-Trybots: master.tryserver.v8:v8_linux_noi18n_rel_ng
Change-Id: I0e2aabb69da7cfb8ba6c1c79bd3851462071a6ac
Reviewed-on: https://chromium-review.googlesource.com/732656
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: 's avatarSergiy Byelozyorov <sergiyb@chromium.org>
Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49001}
parent 776d6e9d
...@@ -117,27 +117,27 @@ class BenchmarksTestSuite(testsuite.TestSuite): ...@@ -117,27 +117,27 @@ class BenchmarksTestSuite(testsuite.TestSuite):
tests.append(testcase.TestCase(self, test)) tests.append(testcase.TestCase(self, test))
return tests return tests
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
result = [] files = []
result += context.mode_flags
if testcase.path.startswith("kraken"): if testcase.path.startswith("kraken"):
result.append(os.path.join(self.testroot, "%s-data.js" % testcase.path)) files.append(os.path.join(self.testroot, "%s-data.js" % testcase.path))
result.append(os.path.join(self.testroot, "%s.js" % testcase.path)) files.append(os.path.join(self.testroot, "%s.js" % testcase.path))
elif testcase.path.startswith("octane"): elif testcase.path.startswith("octane"):
result.append(os.path.join(self.testroot, "octane/base.js")) files.append(os.path.join(self.testroot, "octane/base.js"))
result.append(os.path.join(self.testroot, "%s.js" % testcase.path)) files.append(os.path.join(self.testroot, "%s.js" % testcase.path))
if testcase.path.startswith("octane/gbemu"): if testcase.path.startswith("octane/gbemu"):
result.append(os.path.join(self.testroot, "octane/gbemu-part2.js")) files.append(os.path.join(self.testroot, "octane/gbemu-part2.js"))
elif testcase.path.startswith("octane/typescript"): elif testcase.path.startswith("octane/typescript"):
result.append(os.path.join(self.testroot, files.append(os.path.join(self.testroot,
"octane/typescript-compiler.js")) "octane/typescript-compiler.js"))
result.append(os.path.join(self.testroot, "octane/typescript-input.js")) files.append(os.path.join(self.testroot, "octane/typescript-input.js"))
elif testcase.path.startswith("octane/zlib"): elif testcase.path.startswith("octane/zlib"):
result.append(os.path.join(self.testroot, "octane/zlib-data.js")) files.append(os.path.join(self.testroot, "octane/zlib-data.js"))
result += ["-e", "BenchmarkSuite.RunSuites({});"] files += ["-e", "BenchmarkSuite.RunSuites({});"]
elif testcase.path.startswith("sunspider"): elif testcase.path.startswith("sunspider"):
result.append(os.path.join(self.testroot, "%s.js" % testcase.path)) files.append(os.path.join(self.testroot, "%s.js" % testcase.path))
return testcase.flags + result
return files, testcase.flags + context.mode_flags
def GetSourceForTest(self, testcase): def GetSourceForTest(self, testcase):
filename = os.path.join(self.testroot, testcase.path + ".js") filename = os.path.join(self.testroot, testcase.path + ".js")
......
...@@ -61,9 +61,8 @@ class CcTestSuite(testsuite.TestSuite): ...@@ -61,9 +61,8 @@ class CcTestSuite(testsuite.TestSuite):
tests.sort(key=lambda t: t.path) tests.sort(key=lambda t: t.path)
return tests return tests
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
testname = testcase.path.split(os.path.sep)[-1] return [testcase.path], testcase.flags + context.mode_flags
return (testcase.flags + [testcase.path] + context.mode_flags)
def shell(self): def shell(self):
return "cctest" return "cctest"
......
...@@ -33,9 +33,13 @@ class DebuggerTestSuite(testsuite.TestSuite): ...@@ -33,9 +33,13 @@ class DebuggerTestSuite(testsuite.TestSuite):
tests.append(test) tests.append(test)
return tests return tests
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
flags = (
testcase.flags +
["--enable-inspector", "--allow-natives-syntax"] +
context.mode_flags
)
source = self.GetSourceForTest(testcase) source = self.GetSourceForTest(testcase)
flags = ["--enable-inspector", "--allow-natives-syntax"] + context.mode_flags
flags_match = re.findall(FLAGS_PATTERN, source) flags_match = re.findall(FLAGS_PATTERN, source)
for match in flags_match: for match in flags_match:
flags += match.strip().split() flags += match.strip().split()
...@@ -59,12 +63,13 @@ class DebuggerTestSuite(testsuite.TestSuite): ...@@ -59,12 +63,13 @@ class DebuggerTestSuite(testsuite.TestSuite):
files.append("--module") files.append("--module")
files.append(os.path.join(self.root, testcase.path + self.suffix())) files.append(os.path.join(self.root, testcase.path + self.suffix()))
flags += files all_files = []
all_files += files
if context.isolates: if context.isolates:
flags.append("--isolate") all_files.append("--isolate")
flags += files all_files += files
return testcase.flags + flags return all_files, flags
def GetSourceForTest(self, testcase): def GetSourceForTest(self, testcase):
filename = os.path.join(self.root, testcase.path + self.suffix()) filename = os.path.join(self.root, testcase.path + self.suffix())
......
...@@ -40,9 +40,9 @@ class FuzzerTestSuite(testsuite.TestSuite): ...@@ -40,9 +40,9 @@ class FuzzerTestSuite(testsuite.TestSuite):
tests.sort() tests.sort()
return tests return tests
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
suite, name = testcase.path.split('/') suite, name = testcase.path.split('/')
return [os.path.join(self.root, suite, name)] return [os.path.join(self.root, suite, name)], []
def _VariantGeneratorFactory(self): def _VariantGeneratorFactory(self):
return FuzzerVariantGenerator return FuzzerVariantGenerator
......
...@@ -39,16 +39,17 @@ class InspectorProtocolTestSuite(testsuite.TestSuite): ...@@ -39,16 +39,17 @@ class InspectorProtocolTestSuite(testsuite.TestSuite):
tests.append(test) tests.append(test)
return tests return tests
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
source = self.GetSourceForTest(testcase) source = self.GetSourceForTest(testcase)
flags = [] + context.mode_flags flags = testcase.flags + context.mode_flags
flags_match = re.findall(FLAGS_PATTERN, source) flags_match = re.findall(FLAGS_PATTERN, source)
for match in flags_match: for match in flags_match:
flags += shlex.split(match.strip()) flags += shlex.split(match.strip())
testname = testcase.path.split(os.path.sep)[-1] files = [
testfilename = os.path.join(self.root, testcase.path + self.suffix()) os.path.join(self.root, PROTOCOL_TEST_JS),
protocoltestfilename = os.path.join(self.root, PROTOCOL_TEST_JS) os.path.join(self.root, testcase.path + self.suffix()),
return testcase.flags + flags + [ protocoltestfilename, testfilename ] ]
return files, flags
def GetSourceForTest(self, testcase): def GetSourceForTest(self, testcase):
filename = os.path.join(self.root, testcase.path + self.suffix()) filename = os.path.join(self.root, testcase.path + self.suffix())
......
...@@ -56,9 +56,9 @@ class IntlTestSuite(testsuite.TestSuite): ...@@ -56,9 +56,9 @@ class IntlTestSuite(testsuite.TestSuite):
tests.append(test) tests.append(test)
return tests return tests
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
source = self.GetSourceForTest(testcase) source = self.GetSourceForTest(testcase)
flags = ["--allow-natives-syntax"] + context.mode_flags flags = testcase.flags + ["--allow-natives-syntax"] + context.mode_flags
flags_match = re.findall(FLAGS_PATTERN, source) flags_match = re.findall(FLAGS_PATTERN, source)
for match in flags_match: for match in flags_match:
flags += match.strip().split() flags += match.strip().split()
...@@ -70,12 +70,13 @@ class IntlTestSuite(testsuite.TestSuite): ...@@ -70,12 +70,13 @@ class IntlTestSuite(testsuite.TestSuite):
files.append(os.path.join(self.root, testcase.path + self.suffix())) files.append(os.path.join(self.root, testcase.path + self.suffix()))
files.append(os.path.join(self.root, "regexp-assert.js")) files.append(os.path.join(self.root, "regexp-assert.js"))
flags += files all_files = []
all_files += files
if context.isolates: if context.isolates:
flags.append("--isolate") all_files.append("--isolate")
flags += files all_files += files
return testcase.flags + flags return all_files, flags
def GetSourceForTest(self, testcase): def GetSourceForTest(self, testcase):
filename = os.path.join(self.root, testcase.path + self.suffix()) filename = os.path.join(self.root, testcase.path + self.suffix())
......
...@@ -63,18 +63,18 @@ class MessageTestSuite(testsuite.TestSuite): ...@@ -63,18 +63,18 @@ class MessageTestSuite(testsuite.TestSuite):
return super(MessageTestSuite, self).CreateVariantGenerator( return super(MessageTestSuite, self).CreateVariantGenerator(
variants + ["preparser"]) variants + ["preparser"])
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
source = self.GetSourceForTest(testcase) source = self.GetSourceForTest(testcase)
result = [] files = []
if MODULE_PATTERN.search(source):
files.append("--module")
files.append(os.path.join(self.root, testcase.path + ".js"))
flags = testcase.flags + context.mode_flags
flags_match = re.findall(FLAGS_PATTERN, source) flags_match = re.findall(FLAGS_PATTERN, source)
for match in flags_match: for match in flags_match:
result += match.strip().split() flags += match.strip().split()
result += context.mode_flags flags = [x for x in flags if x not in INVALID_FLAGS]
if MODULE_PATTERN.search(source): return files, flags
result.append("--module")
result = [x for x in result if x not in INVALID_FLAGS]
result.append(os.path.join(self.root, testcase.path + ".js"))
return testcase.flags + result
def GetSourceForTest(self, testcase): def GetSourceForTest(self, testcase):
filename = os.path.join(self.root, testcase.path + self.suffix()) filename = os.path.join(self.root, testcase.path + self.suffix())
......
...@@ -60,9 +60,9 @@ class MjsunitTestSuite(testsuite.TestSuite): ...@@ -60,9 +60,9 @@ class MjsunitTestSuite(testsuite.TestSuite):
tests.append(test) tests.append(test)
return tests return tests
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
flags = testcase.flags + context.mode_flags
source = self.GetSourceForTest(testcase) source = self.GetSourceForTest(testcase)
flags = [] + context.mode_flags
flags_match = re.findall(FLAGS_PATTERN, source) flags_match = re.findall(FLAGS_PATTERN, source)
for match in flags_match: for match in flags_match:
flags += match.strip().split() flags += match.strip().split()
...@@ -90,10 +90,11 @@ class MjsunitTestSuite(testsuite.TestSuite): ...@@ -90,10 +90,11 @@ class MjsunitTestSuite(testsuite.TestSuite):
files.append("--module") files.append("--module")
files.append(testfilename) files.append(testfilename)
flags += files all_files = []
all_files += files
if context.isolates: if context.isolates:
flags.append("--isolate") all_files.append("--isolate")
flags += files all_files += files
env_match = ENV_PATTERN.search(source) env_match = ENV_PATTERN.search(source)
if env_match: if env_match:
...@@ -101,7 +102,7 @@ class MjsunitTestSuite(testsuite.TestSuite): ...@@ -101,7 +102,7 @@ class MjsunitTestSuite(testsuite.TestSuite):
var, value = env_pair.split('=') var, value = env_pair.split('=')
testcase.env[var] = value testcase.env[var] = value
return testcase.flags + flags return all_files, flags
def GetSourceForTest(self, testcase): def GetSourceForTest(self, testcase):
filename = os.path.join(self.root, testcase.path + self.suffix()) filename = os.path.join(self.root, testcase.path + self.suffix())
......
...@@ -18,8 +18,8 @@ class MkGrokdump(testsuite.TestSuite): ...@@ -18,8 +18,8 @@ class MkGrokdump(testsuite.TestSuite):
test = testcase.TestCase(self, self.shell()) test = testcase.TestCase(self, self.shell())
return [test] return [test]
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
return [] return [], []
def IsFailureOutput(self, testcase): def IsFailureOutput(self, testcase):
output = testcase.output output = testcase.output
......
...@@ -81,11 +81,8 @@ class MozillaTestSuite(testsuite.TestSuite): ...@@ -81,11 +81,8 @@ class MozillaTestSuite(testsuite.TestSuite):
tests.append(case) tests.append(case)
return tests return tests
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
result = [] files = [os.path.join(self.root, "mozilla-shell-emulation.js")]
result += context.mode_flags
result += ["--expose-gc"]
result += [os.path.join(self.root, "mozilla-shell-emulation.js")]
testfilename = testcase.path + ".js" testfilename = testcase.path + ".js"
testfilepath = testfilename.split("/") testfilepath = testfilename.split("/")
for i in xrange(len(testfilepath)): for i in xrange(len(testfilepath)):
...@@ -93,9 +90,10 @@ class MozillaTestSuite(testsuite.TestSuite): ...@@ -93,9 +90,10 @@ class MozillaTestSuite(testsuite.TestSuite):
reduce(os.path.join, testfilepath[:i], ""), reduce(os.path.join, testfilepath[:i], ""),
"shell.js") "shell.js")
if os.path.exists(script): if os.path.exists(script):
result.append(script) files.append(script)
result.append(os.path.join(self.testroot, testfilename)) files.append(os.path.join(self.testroot, testfilename))
return testcase.flags + result flags = testcase.flags + context.mode_flags + ["--expose-gc"]
return files, flags
def GetSourceForTest(self, testcase): def GetSourceForTest(self, testcase):
filename = os.path.join(self.testroot, testcase.path + ".js") filename = os.path.join(self.testroot, testcase.path + ".js")
......
...@@ -71,8 +71,8 @@ class PreparserTestSuite(testsuite.TestSuite): ...@@ -71,8 +71,8 @@ class PreparserTestSuite(testsuite.TestSuite):
self._ParsePythonTestTemplates(result, f) self._ParsePythonTestTemplates(result, f)
return result return result
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
return testcase.flags return [], testcase.flags
def GetSourceForTest(self, testcase): def GetSourceForTest(self, testcase):
assert testcase.flags[0] == "-e" assert testcase.flags[0] == "-e"
......
...@@ -71,11 +71,14 @@ class PromiseAplusTestSuite(testsuite.TestSuite): ...@@ -71,11 +71,14 @@ class PromiseAplusTestSuite(testsuite.TestSuite):
os.listdir(os.path.join(self.root, TEST_NAME, 'lib', 'tests')) os.listdir(os.path.join(self.root, TEST_NAME, 'lib', 'tests'))
if fname.endswith('.js')] if fname.endswith('.js')]
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
return (testcase.flags + context.mode_flags + ['--allow-natives-syntax'] + files = (
self.helper_files_pre + self.helper_files_pre +
[os.path.join(self.test_files_root, testcase.path + '.js')] + [os.path.join(self.test_files_root, testcase.path + '.js')] +
self.helper_files_post) self.helper_files_post
)
flags = testcase.flags + context.mode_flags + ['--allow-natives-syntax']
return files, flags
def GetSourceForTest(self, testcase): def GetSourceForTest(self, testcase):
filename = os.path.join(self.root, TEST_NAME, filename = os.path.join(self.root, TEST_NAME,
......
...@@ -153,22 +153,28 @@ class Test262TestSuite(testsuite.TestSuite): ...@@ -153,22 +153,28 @@ class Test262TestSuite(testsuite.TestSuite):
SKIPPED_FEATURES.intersection( SKIPPED_FEATURES.intersection(
self.GetTestRecord(case).get("features", []))) == 0] self.GetTestRecord(case).get("features", []))) == 0]
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
return (testcase.flags + context.mode_flags + self.harness + files = (
([os.path.join(self.root, "harness-agent.js")] list(self.harness) +
if testcase.path.startswith('built-ins/Atomics') else []) + ([os.path.join(self.root, "harness-agent.js")]
self.GetIncludesForTest(testcase) + if testcase.path.startswith('built-ins/Atomics') else []) +
(["--module"] if "module" in self.GetTestRecord(testcase) else []) + self.GetIncludesForTest(testcase) +
[self.GetPathForTest(testcase)] + (["--module"] if "module" in self.GetTestRecord(testcase) else []) +
(["--throws"] if "negative" in self.GetTestRecord(testcase) [self.GetPathForTest(testcase)]
else []) + )
(["--allow-natives-syntax"] flags = (
if "detachArrayBuffer.js" in testcase.flags + context.mode_flags +
self.GetTestRecord(testcase).get("includes", []) (["--throws"] if "negative" in self.GetTestRecord(testcase)
else []) + else []) +
([flag for flag in testcase.outcomes if flag.startswith("--")]) + (["--allow-natives-syntax"]
([flag for (feature, flag) in FEATURE_FLAGS.items() if "detachArrayBuffer.js" in
if feature in self.GetTestRecord(testcase).get("features", [])])) self.GetTestRecord(testcase).get("includes", [])
else []) +
([flag for flag in testcase.outcomes if flag.startswith("--")]) +
([flag for (feature, flag) in FEATURE_FLAGS.items()
if feature in self.GetTestRecord(testcase).get("features", [])])
)
return files, flags
def _VariantGeneratorFactory(self): def _VariantGeneratorFactory(self):
return Test262VariantGenerator return Test262VariantGenerator
...@@ -201,12 +207,8 @@ class Test262TestSuite(testsuite.TestSuite): ...@@ -201,12 +207,8 @@ class Test262TestSuite(testsuite.TestSuite):
def GetIncludesForTest(self, testcase): def GetIncludesForTest(self, testcase):
test_record = self.GetTestRecord(testcase) test_record = self.GetTestRecord(testcase)
if "includes" in test_record: return [os.path.join(self.BasePath(filename), filename)
return [os.path.join(self.BasePath(filename), filename) for filename in test_record.get("includes", [])]
for filename in test_record.get("includes", [])]
else:
includes = []
return includes
def GetPathForTest(self, testcase): def GetPathForTest(self, testcase):
filename = os.path.join(self.localtestroot, testcase.path + ".js") filename = os.path.join(self.localtestroot, testcase.path + ".js")
......
...@@ -25,10 +25,10 @@ class WasmSpecTestsTestSuite(testsuite.TestSuite): ...@@ -25,10 +25,10 @@ class WasmSpecTestsTestSuite(testsuite.TestSuite):
tests.append(test) tests.append(test)
return tests return tests
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
flags = [] + context.mode_flags flags = testcase.flags + context.mode_flags
flags.append(os.path.join(self.root, testcase.path + self.suffix())) files = [os.path.join(self.root, testcase.path + self.suffix())]
return testcase.flags + flags return files, flags
def GetSuite(name, root): def GetSuite(name, root):
......
...@@ -62,9 +62,9 @@ class WebkitTestSuite(testsuite.TestSuite): ...@@ -62,9 +62,9 @@ class WebkitTestSuite(testsuite.TestSuite):
tests.append(test) tests.append(test)
return tests return tests
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
source = self.GetSourceForTest(testcase) source = self.GetSourceForTest(testcase)
flags = [] + context.mode_flags flags = testcase.flags + context.mode_flags
flags_match = re.findall(FLAGS_PATTERN, source) flags_match = re.findall(FLAGS_PATTERN, source)
for match in flags_match: for match in flags_match:
flags += match.strip().split() flags += match.strip().split()
...@@ -88,12 +88,13 @@ class WebkitTestSuite(testsuite.TestSuite): ...@@ -88,12 +88,13 @@ class WebkitTestSuite(testsuite.TestSuite):
files.append(testfilename) files.append(testfilename)
files.append(os.path.join(self.root, "resources/standalone-post.js")) files.append(os.path.join(self.root, "resources/standalone-post.js"))
flags += files all_files = []
all_files += files
if context.isolates: if context.isolates:
flags.append("--isolate") all_files.append("--isolate")
flags += files all_files += files
return testcase.flags + flags return all_files, flags
def GetSourceForTest(self, testcase): def GetSourceForTest(self, testcase):
filename = os.path.join(self.root, testcase.path + self.suffix()) filename = os.path.join(self.root, testcase.path + self.suffix())
......
...@@ -92,11 +92,16 @@ def GetCommand(test, context): ...@@ -92,11 +92,16 @@ def GetCommand(test, context):
shell += ".exe" shell += ".exe"
if context.random_seed: if context.random_seed:
d8testflag += ["--random-seed=%s" % context.random_seed] d8testflag += ["--random-seed=%s" % context.random_seed]
cmd = (context.command_prefix + files, flags = test.suite.GetParametersForTestCase(test, context)
[os.path.abspath(os.path.join(context.shell_dir, shell))] + cmd = (
d8testflag + context.command_prefix +
test.suite.GetFlagsForTestCase(test, context) + [os.path.abspath(os.path.join(context.shell_dir, shell))] +
context.extra_flags) d8testflag +
files +
context.extra_flags +
# Flags from test cases can overwrite extra cmd-line flags.
flags
)
return cmd return cmd
......
...@@ -257,7 +257,8 @@ class TestSuite(object): ...@@ -257,7 +257,8 @@ class TestSuite(object):
break break
self.tests = filtered self.tests = filtered
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
"""Returns a tuple of (files, flags) for this test case."""
raise NotImplementedError raise NotImplementedError
def GetSourceForTest(self, testcase): def GetSourceForTest(self, testcase):
...@@ -348,11 +349,11 @@ class GoogleTestSuite(TestSuite): ...@@ -348,11 +349,11 @@ class GoogleTestSuite(TestSuite):
tests.sort(key=lambda t: t.path) tests.sort(key=lambda t: t.path)
return tests return tests
def GetFlagsForTestCase(self, testcase, context): def GetParametersForTestCase(self, testcase, context):
return (testcase.flags + ["--gtest_filter=" + testcase.path] + return [], (testcase.flags + ["--gtest_filter=" + testcase.path] +
["--gtest_random_seed=%s" % context.random_seed] + ["--gtest_random_seed=%s" % context.random_seed] +
["--gtest_print_time=0"] + ["--gtest_print_time=0"] +
context.mode_flags) context.mode_flags)
def _VariantGeneratorFactory(self): def _VariantGeneratorFactory(self):
return StandardVariantGenerator return StandardVariantGenerator
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment