From 53cb098bd70854ec66436ba49d4f186e9188350c Mon Sep 17 00:00:00 2001 From: Jan de Mooij Date: Tue, 3 Sep 2019 09:27:47 +0000 Subject: [PATCH] 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 --- js/src/tests/jstests.list | 106 ++++++++++++++++++----------------- js/src/tests/lib/manifest.py | 7 ++- js/src/tests/lib/tests.py | 5 ++ 3 files changed, 65 insertions(+), 53 deletions(-) diff --git a/js/src/tests/jstests.list b/js/src/tests/jstests.list index e1b3fdac44a3..57fa7376c448 100644 --- a/js/src/tests/jstests.list +++ b/js/src/tests/jstests.list @@ -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 diff --git a/js/src/tests/lib/manifest.py b/js/src/tests/lib/manifest.py index 542d4d076509..e35ff3344b17 100644 --- a/js/src/tests/lib/manifest.py +++ b/js/src/tests/lib/manifest.py @@ -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: diff --git a/js/src/tests/lib/tests.py b/js/src/tests/lib/tests.py index 975eb94cd147..b77965a93e92 100644 --- a/js/src/tests/lib/tests.py +++ b/js/src/tests/lib/tests.py @@ -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):