Bug 1545038 - Add an ignore-flag directive to jsreftest harness to allow running tests that pass without --more-compartments. r=jorendorff

The cross-compartment case is still buggy but this at least ensures we don't
regress the correct same-compartment behavior.

Differential Revision: https://phabricator.services.mozilla.com/D36740

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Jan de Mooij 2019-09-03 09:27:47 +00:00
parent a1ab6fde12
commit 53cb098bd7
3 changed files with 65 additions and 53 deletions

View File

@ -267,36 +267,37 @@ skip script test262/language/expressions/prefix-increment/S11.4.4_A6_T2.js
skip script test262/built-ins/Number/prototype/toExponential/return-values.js
# https://bugzilla.mozilla.org/show_bug.cgi?id=1225839
skip script test262/built-ins/Function/internals/Call/class-ctor-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Function/internals/Call/class-ctor-realm.js
# https://bugzilla.mozilla.org/show_bug.cgi?id=1297179
skip script test262/built-ins/Proxy/apply/arguments-realm.js
skip script test262/built-ins/Proxy/apply/trap-is-not-callable-realm.js
skip script test262/built-ins/Proxy/construct/arguments-realm.js
skip script test262/built-ins/Proxy/construct/trap-is-not-callable-realm.js
skip script test262/built-ins/Proxy/defineProperty/desc-realm.js
skip script test262/built-ins/Proxy/defineProperty/null-handler-realm.js
skip script test262/built-ins/Proxy/defineProperty/targetdesc-configurable-desc-not-configurable-realm.js
skip script test262/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-not-configurable-target-realm.js
skip script test262/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-realm.js
skip script test262/built-ins/Proxy/defineProperty/targetdesc-undefined-not-configurable-descriptor-realm.js
skip script test262/built-ins/Proxy/defineProperty/targetdesc-undefined-target-is-not-extensible-realm.js
skip script test262/built-ins/Proxy/defineProperty/trap-is-not-callable-realm.js
skip script test262/built-ins/Proxy/deleteProperty/trap-is-not-callable-realm.js
skip script test262/built-ins/Proxy/get/trap-is-not-callable-realm.js
skip script test262/built-ins/Proxy/getOwnPropertyDescriptor/result-type-is-not-object-nor-undefined-realm.js
skip script test262/built-ins/Proxy/getOwnPropertyDescriptor/trap-is-not-callable-realm.js
skip script test262/built-ins/Proxy/getPrototypeOf/trap-is-not-callable-realm.js
skip script test262/built-ins/Proxy/has/trap-is-not-callable-realm.js
skip script test262/built-ins/Proxy/isExtensible/trap-is-not-callable-realm.js
skip script test262/built-ins/Proxy/ownKeys/return-not-list-object-throws-realm.js
skip script test262/built-ins/Proxy/ownKeys/trap-is-not-callable-realm.js
skip script test262/built-ins/Proxy/preventExtensions/trap-is-not-callable-realm.js
skip script test262/built-ins/Proxy/set/trap-is-not-callable-realm.js
skip script test262/built-ins/Proxy/setPrototypeOf/trap-is-not-callable-realm.js
# All of these tests pass except with --more-compartments.
ignore-flag(--more-compartments) script test262/built-ins/Proxy/apply/arguments-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/apply/trap-is-not-callable-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/construct/arguments-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/construct/trap-is-not-callable-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/defineProperty/desc-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/defineProperty/null-handler-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/defineProperty/targetdesc-configurable-desc-not-configurable-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-not-configurable-target-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/defineProperty/targetdesc-not-compatible-descriptor-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/defineProperty/targetdesc-undefined-not-configurable-descriptor-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/defineProperty/targetdesc-undefined-target-is-not-extensible-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/defineProperty/trap-is-not-callable-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/deleteProperty/trap-is-not-callable-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/get/trap-is-not-callable-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/getOwnPropertyDescriptor/result-type-is-not-object-nor-undefined-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/getOwnPropertyDescriptor/trap-is-not-callable-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/getPrototypeOf/trap-is-not-callable-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/has/trap-is-not-callable-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/isExtensible/trap-is-not-callable-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/ownKeys/return-not-list-object-throws-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/ownKeys/trap-is-not-callable-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/preventExtensions/trap-is-not-callable-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/set/trap-is-not-callable-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/setPrototypeOf/trap-is-not-callable-realm.js
# Errors thrown from wrong realm, similar to 1225839, 1288457, and 1297179.
skip script test262/built-ins/Array/length/define-own-prop-length-overflow-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Array/length/define-own-prop-length-overflow-realm.js
skip script test262/built-ins/Function/internals/Construct/derived-return-val-realm.js
skip script test262/built-ins/Function/internals/Construct/derived-this-uninitialized-realm.js
@ -398,35 +399,36 @@ skip script test262/annexB/built-ins/Function/createdynfn-no-line-terminator-htm
skip script test262/annexB/language/function-code/block-decl-nested-blocks-with-fun-decl.js
# https://bugzilla.mozilla.org/show_bug.cgi?id=1508683
skip script test262/built-ins/RegExp/prototype/multiline/cross-realm.js
skip script test262/built-ins/RegExp/prototype/global/cross-realm.js
skip script test262/built-ins/RegExp/prototype/sticky/cross-realm.js
skip script test262/built-ins/RegExp/prototype/ignoreCase/cross-realm.js
skip script test262/built-ins/RegExp/prototype/unicode/cross-realm.js
skip script test262/built-ins/RegExp/prototype/source/cross-realm.js
# All of these tests pass except with --more-compartments.
ignore-flag(--more-compartments) script test262/built-ins/RegExp/prototype/multiline/cross-realm.js
ignore-flag(--more-compartments) script test262/built-ins/RegExp/prototype/global/cross-realm.js
ignore-flag(--more-compartments) script test262/built-ins/RegExp/prototype/sticky/cross-realm.js
ignore-flag(--more-compartments) script test262/built-ins/RegExp/prototype/ignoreCase/cross-realm.js
ignore-flag(--more-compartments) script test262/built-ins/RegExp/prototype/unicode/cross-realm.js
ignore-flag(--more-compartments) script test262/built-ins/RegExp/prototype/source/cross-realm.js
# https://bugzilla.mozilla.org/show_bug.cgi?id=1545038
# All of these tests pass except with --more-compartments.
skip script test262/built-ins/String/prototype/valueOf/non-generic-realm.js
skip script test262/built-ins/String/prototype/valueOf/non-generic-realm.js
skip script test262/built-ins/String/prototype/toString/non-generic-realm.js
skip script test262/built-ins/String/prototype/toString/non-generic-realm.js
skip script test262/built-ins/Proxy/apply/null-handler-realm.js
skip script test262/built-ins/Proxy/apply/null-handler-realm.js
skip script test262/built-ins/Proxy/construct/return-not-object-throws-number-realm.js
skip script test262/built-ins/Proxy/construct/return-not-object-throws-number-realm.js
skip script test262/built-ins/Proxy/construct/null-handler-realm.js
skip script test262/built-ins/Proxy/construct/null-handler-realm.js
skip script test262/built-ins/Proxy/construct/return-not-object-throws-undefined-realm.js
skip script test262/built-ins/Proxy/construct/return-not-object-throws-undefined-realm.js
skip script test262/built-ins/Proxy/construct/return-not-object-throws-symbol-realm.js
skip script test262/built-ins/Proxy/construct/return-not-object-throws-symbol-realm.js
skip script test262/built-ins/Proxy/construct/return-not-object-throws-string-realm.js
skip script test262/built-ins/Proxy/construct/return-not-object-throws-string-realm.js
skip script test262/built-ins/Proxy/construct/return-not-object-throws-null-realm.js
skip script test262/built-ins/Proxy/construct/return-not-object-throws-null-realm.js
skip script test262/built-ins/Proxy/construct/return-not-object-throws-boolean-realm.js
skip script test262/built-ins/Proxy/construct/return-not-object-throws-boolean-realm.js
ignore-flag(--more-compartments) script test262/built-ins/String/prototype/valueOf/non-generic-realm.js
ignore-flag(--more-compartments) script test262/built-ins/String/prototype/valueOf/non-generic-realm.js
ignore-flag(--more-compartments) script test262/built-ins/String/prototype/toString/non-generic-realm.js
ignore-flag(--more-compartments) script test262/built-ins/String/prototype/toString/non-generic-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/apply/null-handler-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/apply/null-handler-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/construct/return-not-object-throws-number-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/construct/return-not-object-throws-number-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/construct/null-handler-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/construct/null-handler-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/construct/return-not-object-throws-undefined-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/construct/return-not-object-throws-undefined-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/construct/return-not-object-throws-symbol-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/construct/return-not-object-throws-symbol-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/construct/return-not-object-throws-string-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/construct/return-not-object-throws-string-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/construct/return-not-object-throws-null-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/construct/return-not-object-throws-null-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/construct/return-not-object-throws-boolean-realm.js
ignore-flag(--more-compartments) script test262/built-ins/Proxy/construct/return-not-object-throws-boolean-realm.js
# https://bugzilla.mozilla.org/show_bug.cgi?id=1560355
skip script test262/intl402/DateTimeFormat/numbering-system-calendar-options.js

View File

@ -154,6 +154,10 @@ def _parse_one(testcase, terms, xul_tester):
if xul_tester.test(cond):
testcase.expect = testcase.enable = False
pos += 1
elif parts[pos].startswith('ignore-flag'):
flag = parts[pos][len('ignore-flag('):-1]
testcase.ignoredflags.append(flag)
pos += 1
elif parts[pos].startswith('random-if'):
cond = parts[pos][len('random-if('):-1]
if xul_tester.test(cond):
@ -199,7 +203,8 @@ def _build_manifest_script_entry(script_name, test):
terms = " ".join([term for term in test.terms.split()
if not (term == "module" or
term == "async" or
term.startswith("error:"))])
term.startswith("error:") or
term.startswith("ignore-flag("))])
if terms:
line.append(terms)
if test.error:

View File

@ -168,6 +168,8 @@ class RefTestCase(object):
self.options = []
# [str]: JIT flags to pass to the shell
self.jitflags = []
# [str]: flags to never pass to the shell for this test
self.ignoredflags = []
# str or None: path to reflect-stringify.js file to test
# instead of actually running tests
self.test_reflect_stringify = None
@ -229,6 +231,9 @@ class RefTestCase(object):
cmd += ["--module", self.abs_path()]
else:
cmd += ["-f", self.abs_path()]
for flag in self.ignoredflags:
if flag in cmd:
cmd.remove(flag)
return cmd
def __str__(self):