diff options
author | Tarik Eshaq <tarikeshaq@gmail.com> | 2021-01-10 09:49:45 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-10 12:49:45 -0500 |
commit | 9801858cb0675de801b1c15d1b3826c88406068a (patch) | |
tree | ac4b085f297b949c1625acd26a7d50c52a2cae3f | |
parent | f7e09c6a555e115c004feca56f8b279c5f18c9b2 (diff) |
tests(wpt/console): Enables web platform tests for console (#9013)
-rw-r--r-- | cli/tests/unit/console_test.ts | 3 | ||||
-rw-r--r-- | cli/tests/wpt.jsonc | 6 | ||||
-rw-r--r-- | runtime/js/02_console.js | 9 | ||||
-rw-r--r-- | runtime/js/99_main.js | 5 |
4 files changed, 21 insertions, 2 deletions
diff --git a/cli/tests/unit/console_test.ts b/cli/tests/unit/console_test.ts index 37112bea6..c6511e12e 100644 --- a/cli/tests/unit/console_test.ts +++ b/cli/tests/unit/console_test.ts @@ -313,7 +313,7 @@ unitTest(function consoleTestStringifyCircular(): void { ); assertEquals( stringify(console), - `{ + `console { log: [Function: log], debug: [Function: log], info: [Function: log], @@ -334,6 +334,7 @@ unitTest(function consoleTestStringifyCircular(): void { clear: [Function: clear], trace: [Function: trace], indentLevel: 0, + [Symbol(Symbol.toStringTag)]: "console", [Symbol(isConsoleInstance)]: true }`, ); diff --git a/cli/tests/wpt.jsonc b/cli/tests/wpt.jsonc index 2e3882fe2..29f3967ad 100644 --- a/cli/tests/wpt.jsonc +++ b/cli/tests/wpt.jsonc @@ -174,6 +174,12 @@ "structured-serialize-detail", "user_timing_exists" ], + "console": [ + "console-is-a-namespace", + "console-label-conversion", + "console-namespace-object-class-string", + "console-tests-historical", + ], "WebCryptoApi": [ "getRandomValues" ] diff --git a/runtime/js/02_console.js b/runtime/js/02_console.js index 971837bd6..11b819850 100644 --- a/runtime/js/02_console.js +++ b/runtime/js/02_console.js @@ -1449,7 +1449,14 @@ // For historical web-compatibility reasons, the namespace object for // console must have as its [[Prototype]] an empty object, created as if // by ObjectCreate(%ObjectPrototype%), instead of %ObjectPrototype%. - const console = Object.create({}); + const console = Object.create({}, { + [Symbol.toStringTag]: { + enumerable: false, + writable: false, + configurable: true, + value: "console", + }, + }); Object.assign(console, this); return console; } diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js index 284bef48c..21e1ed5eb 100644 --- a/runtime/js/99_main.js +++ b/runtime/js/99_main.js @@ -245,6 +245,11 @@ delete Object.prototype.__proto__; setTimeout: util.writable(timers.setTimeout), }; + // The console seems to be the only one that should be writable and non-enumerable + // thus we don't have a unique helper for it. If other properties follow the same + // structure, it might be worth it to define a helper in `util` + windowOrWorkerGlobalScope.console.enumerable = false; + const mainRuntimeGlobalProperties = { Window: globalInterfaces.windowConstructorDescriptor, window: util.readOnly(globalThis), |