mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 15:24:46 -05:00
chore: update wpt (#10509)
This commit is contained in:
parent
beba52c17c
commit
d806dc0f16
5 changed files with 405 additions and 383 deletions
|
@ -1 +1 @@
|
||||||
Subproject commit 50b30cfba06e3e8baa564da872241aa7c8f2e439
|
Subproject commit 25303eda8c01d5be0483e9288f67257119b9b49d
|
106
tools/wpt.ts
106
tools/wpt.ts
|
@ -137,7 +137,6 @@ async function setup() {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface TestToRun {
|
interface TestToRun {
|
||||||
sourcePath: string;
|
|
||||||
path: string;
|
path: string;
|
||||||
url: URL;
|
url: URL;
|
||||||
options: ManifestTestOptions;
|
options: ManifestTestOptions;
|
||||||
|
@ -146,7 +145,12 @@ interface TestToRun {
|
||||||
|
|
||||||
async function run() {
|
async function run() {
|
||||||
assert(Array.isArray(rest), "filter must be array");
|
assert(Array.isArray(rest), "filter must be array");
|
||||||
const tests = discoverTestsToRun(rest.length == 0 ? undefined : rest);
|
const expectation = getExpectation();
|
||||||
|
const tests = discoverTestsToRun(
|
||||||
|
rest.length == 0 ? undefined : rest,
|
||||||
|
expectation,
|
||||||
|
);
|
||||||
|
assertAllExpectationsHaveTests(expectation, tests);
|
||||||
console.log(`Going to run ${tests.length} test files.`);
|
console.log(`Going to run ${tests.length} test files.`);
|
||||||
|
|
||||||
const results = await runWithTestUtil(false, async () => {
|
const results = await runWithTestUtil(false, async () => {
|
||||||
|
@ -173,6 +177,43 @@ async function run() {
|
||||||
Deno.exit(code);
|
Deno.exit(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check that all expectations in the expectations file have a test that will be
|
||||||
|
// run.
|
||||||
|
function assertAllExpectationsHaveTests(
|
||||||
|
expectation: Expectation,
|
||||||
|
testsToRun: TestToRun[],
|
||||||
|
): void {
|
||||||
|
const tests = new Set(testsToRun.map((t) => t.path));
|
||||||
|
const missingTests: string[] = [];
|
||||||
|
|
||||||
|
function walk(parentExpectation: Expectation, parent: string) {
|
||||||
|
for (const key in parentExpectation) {
|
||||||
|
const path = `${parent}/${key}`;
|
||||||
|
const expectation = parentExpectation[key];
|
||||||
|
if (typeof expectation == "boolean" || Array.isArray(expectation)) {
|
||||||
|
if (!tests.has(path)) {
|
||||||
|
missingTests.push(path);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
walk(expectation, path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
walk(expectation, "");
|
||||||
|
|
||||||
|
if (missingTests.length > 0) {
|
||||||
|
console.log(
|
||||||
|
red(
|
||||||
|
"Following tests are missing in manifest, but are present in expectations:",
|
||||||
|
),
|
||||||
|
);
|
||||||
|
console.log("");
|
||||||
|
console.log(missingTests.join("\n"));
|
||||||
|
Deno.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function update() {
|
async function update() {
|
||||||
assert(Array.isArray(rest), "filter must be array");
|
assert(Array.isArray(rest), "filter must be array");
|
||||||
const tests = discoverTestsToRun(rest.length == 0 ? undefined : rest, true);
|
const tests = discoverTestsToRun(rest.length == 0 ? undefined : rest, true);
|
||||||
|
@ -204,8 +245,8 @@ async function update() {
|
||||||
{ passed: string[]; failed: string[]; status: number }
|
{ passed: string[]; failed: string[]; status: number }
|
||||||
> = {};
|
> = {};
|
||||||
for (const { test, result } of results) {
|
for (const { test, result } of results) {
|
||||||
if (!resultTests[test.sourcePath]) {
|
if (!resultTests[test.path]) {
|
||||||
resultTests[test.sourcePath] = {
|
resultTests[test.path] = {
|
||||||
passed: [],
|
passed: [],
|
||||||
failed: [],
|
failed: [],
|
||||||
status: result.status,
|
status: result.status,
|
||||||
|
@ -213,9 +254,9 @@ async function update() {
|
||||||
}
|
}
|
||||||
for (const case_ of result.cases) {
|
for (const case_ of result.cases) {
|
||||||
if (case_.passed) {
|
if (case_.passed) {
|
||||||
resultTests[test.sourcePath].passed.push(case_.name);
|
resultTests[test.path].passed.push(case_.name);
|
||||||
} else {
|
} else {
|
||||||
resultTests[test.sourcePath].failed.push(case_.name);
|
resultTests[test.path].failed.push(case_.name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -485,27 +526,9 @@ function discoverTestsToRun(
|
||||||
prefix: string,
|
prefix: string,
|
||||||
) {
|
) {
|
||||||
for (const key in parentFolder) {
|
for (const key in parentFolder) {
|
||||||
const sourcePath = `${prefix}/${key}`;
|
|
||||||
const entry = parentFolder[key];
|
const entry = parentFolder[key];
|
||||||
const expectation = Array.isArray(parentExpectation) ||
|
|
||||||
typeof parentExpectation == "boolean"
|
|
||||||
? parentExpectation
|
|
||||||
: parentExpectation[key];
|
|
||||||
|
|
||||||
if (expectation === undefined) continue;
|
|
||||||
|
|
||||||
if (Array.isArray(entry)) {
|
if (Array.isArray(entry)) {
|
||||||
assert(
|
|
||||||
Array.isArray(expectation) || typeof expectation == "boolean",
|
|
||||||
"test entry must not have a folder expectation",
|
|
||||||
);
|
|
||||||
if (
|
|
||||||
filter &&
|
|
||||||
!filter.find((filter) => sourcePath.substring(1).startsWith(filter))
|
|
||||||
) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (
|
for (
|
||||||
const [path, options] of entry.slice(
|
const [path, options] of entry.slice(
|
||||||
1,
|
1,
|
||||||
|
@ -514,16 +537,45 @@ function discoverTestsToRun(
|
||||||
if (!path) continue;
|
if (!path) continue;
|
||||||
const url = new URL(path, "http://web-platform.test:8000");
|
const url = new URL(path, "http://web-platform.test:8000");
|
||||||
if (!url.pathname.endsWith(".any.html")) continue;
|
if (!url.pathname.endsWith(".any.html")) continue;
|
||||||
|
const finalPath = url.pathname + url.search;
|
||||||
|
|
||||||
|
const split = finalPath.split("/");
|
||||||
|
const finalKey = split[split.length - 1];
|
||||||
|
|
||||||
|
const expectation = Array.isArray(parentExpectation) ||
|
||||||
|
typeof parentExpectation == "boolean"
|
||||||
|
? parentExpectation
|
||||||
|
: parentExpectation[finalKey];
|
||||||
|
|
||||||
|
if (expectation === undefined) continue;
|
||||||
|
|
||||||
|
assert(
|
||||||
|
Array.isArray(expectation) || typeof expectation == "boolean",
|
||||||
|
"test entry must not have a folder expectation",
|
||||||
|
);
|
||||||
|
|
||||||
|
if (
|
||||||
|
filter &&
|
||||||
|
!filter.find((filter) => finalPath.substring(1).startsWith(filter))
|
||||||
|
) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
testsToRun.push({
|
testsToRun.push({
|
||||||
sourcePath,
|
path: finalPath,
|
||||||
path: url.pathname + url.search,
|
|
||||||
url,
|
url,
|
||||||
options,
|
options,
|
||||||
expectation,
|
expectation,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
walk(entry, expectation, sourcePath);
|
const expectation = Array.isArray(parentExpectation) ||
|
||||||
|
typeof parentExpectation == "boolean"
|
||||||
|
? parentExpectation
|
||||||
|
: parentExpectation[key];
|
||||||
|
|
||||||
|
if (expectation === undefined) continue;
|
||||||
|
|
||||||
|
walk(entry, expectation, `${prefix}/${key}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
{
|
{
|
||||||
"WebCryptoAPI": {
|
"WebCryptoAPI": {
|
||||||
"getRandomValues.any.js": true
|
"getRandomValues.any.html": true
|
||||||
},
|
},
|
||||||
"console": {
|
"console": {
|
||||||
"console-is-a-namespace.any.js": true,
|
"console-is-a-namespace.any.html": true,
|
||||||
"console-label-conversion.any.js": true,
|
"console-label-conversion.any.html": true,
|
||||||
"console-namespace-object-class-string.any.js": true,
|
"console-namespace-object-class-string.any.html": true,
|
||||||
"console-tests-historical.any.js": true,
|
"console-tests-historical.any.html": true,
|
||||||
"idlharness.any.js": [
|
"idlharness.any.html": [
|
||||||
"console namespace: operation table(optional any, optional sequence<DOMString>)",
|
"console namespace: operation table(optional any, optional sequence<DOMString>)",
|
||||||
"console namespace: operation dir(optional any, optional object?)",
|
"console namespace: operation dir(optional any, optional object?)",
|
||||||
"console namespace: operation dirxml(any...)"
|
"console namespace: operation dirxml(any...)"
|
||||||
|
@ -15,33 +15,30 @@
|
||||||
},
|
},
|
||||||
"dom": {
|
"dom": {
|
||||||
"abort": {
|
"abort": {
|
||||||
"event.any.js": true
|
"event.any.html": true
|
||||||
},
|
},
|
||||||
"events": {
|
"events": {
|
||||||
"AddEventListenerOptions-signal.any.js": true,
|
"AddEventListenerOptions-signal.any.html": true,
|
||||||
"Event-dispatch-listener-order.window.js": true,
|
"Event-isTrusted.any.html": true,
|
||||||
"Event-isTrusted.any.js": true,
|
"EventTarget-constructible.any.html": true,
|
||||||
"EventListener-addEventListener.sub.window.js": true,
|
"Event-constructors.any.html": [
|
||||||
"EventTarget-constructible.any.js": true,
|
|
||||||
"event-global-extra.window.js": true,
|
|
||||||
"event-global.worker.js": true,
|
|
||||||
"legacy-pre-activation-behavior.window.js": true,
|
|
||||||
"relatedTarget.window.js": true,
|
|
||||||
"Event-constructors.any.js": [
|
|
||||||
"Untitled 2",
|
"Untitled 2",
|
||||||
"Untitled 3"
|
"Untitled 3"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"encoding": {
|
"encoding": {
|
||||||
"api-basics.any.js": true,
|
"api-basics.any.html": true,
|
||||||
"api-invalid-label.any.js": true,
|
"api-invalid-label.any.html?1-1000": true,
|
||||||
"api-replacement-encodings.any.js": true,
|
"api-invalid-label.any.html?1001-2000": true,
|
||||||
"api-surrogates-utf8.any.js": true,
|
"api-invalid-label.any.html?2001-3000": true,
|
||||||
"encodeInto.any.js": [
|
"api-invalid-label.any.html?3001-last": true,
|
||||||
|
"api-replacement-encodings.any.html": true,
|
||||||
|
"api-surrogates-utf8.any.html": true,
|
||||||
|
"encodeInto.any.html": [
|
||||||
"encodeInto() and a detached output buffer"
|
"encodeInto() and a detached output buffer"
|
||||||
],
|
],
|
||||||
"idlharness.any.js": [
|
"idlharness.any.html": [
|
||||||
"TextDecoder interface: existence and properties of interface object",
|
"TextDecoder interface: existence and properties of interface object",
|
||||||
"TextDecoder interface: operation decode(optional BufferSource, optional TextDecodeOptions)",
|
"TextDecoder interface: operation decode(optional BufferSource, optional TextDecodeOptions)",
|
||||||
"TextDecoder interface: attribute encoding",
|
"TextDecoder interface: attribute encoding",
|
||||||
|
@ -71,39 +68,45 @@
|
||||||
"TextEncoderStream interface: existence and properties of interface prototype object's @@unscopables property",
|
"TextEncoderStream interface: existence and properties of interface prototype object's @@unscopables property",
|
||||||
"TextEncoderStream interface: attribute encoding"
|
"TextEncoderStream interface: attribute encoding"
|
||||||
],
|
],
|
||||||
"iso-2022-jp-decoder.any.js": false,
|
"iso-2022-jp-decoder.any.html": false,
|
||||||
"legacy-mb-schinese": {
|
"legacy-mb-schinese": {
|
||||||
"gb18030": {
|
"gb18030": {
|
||||||
"gb18030-decoder.any.js": true
|
"gb18030-decoder.any.html": true
|
||||||
},
|
},
|
||||||
"gbk": {
|
"gbk": {
|
||||||
"gbk-decoder.any.js": true
|
"gbk-decoder.any.html": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"replacement-encodings.any.js": false,
|
"replacement-encodings.any.html": false,
|
||||||
"streams": {
|
"streams": {
|
||||||
"backpressure.any.js": false,
|
"backpressure.any.html": false,
|
||||||
"decode-attributes.any.js": false,
|
"decode-attributes.any.html": false,
|
||||||
"decode-bad-chunks.any.js": false,
|
"decode-bad-chunks.any.html": false,
|
||||||
"decode-ignore-bom.any.js": false,
|
"decode-ignore-bom.any.html": false,
|
||||||
"decode-incomplete-input.any.js": false,
|
"decode-incomplete-input.any.html": false,
|
||||||
"decode-non-utf8.any.js": false,
|
"decode-non-utf8.any.html": false,
|
||||||
"decode-split-character.any.js": false,
|
"decode-split-character.any.html": false,
|
||||||
"decode-utf8.any.js": false,
|
"decode-utf8.any.html": false,
|
||||||
"encode-bad-chunks.any.js": false,
|
"encode-bad-chunks.any.html": false,
|
||||||
"encode-utf8.any.js": false,
|
"encode-utf8.any.html": false,
|
||||||
"readable-writable-properties.any.js": false,
|
"readable-writable-properties.any.html": false
|
||||||
"realms.window.js": false
|
|
||||||
},
|
},
|
||||||
"textdecoder-byte-order-marks.any.js": true,
|
"textdecoder-byte-order-marks.any.html": true,
|
||||||
"textdecoder-copy.any.js": false,
|
"textdecoder-copy.any.html": false,
|
||||||
"textdecoder-fatal-single-byte.any.js": true,
|
"textdecoder-fatal-single-byte.any.html?1-1000": true,
|
||||||
"textdecoder-fatal-streaming.any.js": [
|
"textdecoder-fatal-single-byte.any.html?1001-2000": true,
|
||||||
|
"textdecoder-fatal-single-byte.any.html?2001-3000": true,
|
||||||
|
"textdecoder-fatal-single-byte.any.html?3001-4000": true,
|
||||||
|
"textdecoder-fatal-single-byte.any.html?4001-5000": true,
|
||||||
|
"textdecoder-fatal-single-byte.any.html?5001-6000": true,
|
||||||
|
"textdecoder-fatal-single-byte.any.html?6001-7000": true,
|
||||||
|
"textdecoder-fatal-single-byte.any.html?7001-last": true,
|
||||||
|
"textdecoder-fatal-streaming.any.html": [
|
||||||
"Fatal flag, streaming cases"
|
"Fatal flag, streaming cases"
|
||||||
],
|
],
|
||||||
"textdecoder-fatal.any.js": true,
|
"textdecoder-fatal.any.html": true,
|
||||||
"textdecoder-ignorebom.any.js": true,
|
"textdecoder-ignorebom.any.html": true,
|
||||||
"textdecoder-labels.any.js": [
|
"textdecoder-labels.any.html": [
|
||||||
"cseucpkdfmtjapanese => EUC-JP",
|
"cseucpkdfmtjapanese => EUC-JP",
|
||||||
"euc-jp => EUC-JP",
|
"euc-jp => EUC-JP",
|
||||||
"x-euc-jp => EUC-JP",
|
"x-euc-jp => EUC-JP",
|
||||||
|
@ -129,25 +132,25 @@
|
||||||
"windows-949 => EUC-KR",
|
"windows-949 => EUC-KR",
|
||||||
"x-user-defined => x-user-defined"
|
"x-user-defined => x-user-defined"
|
||||||
],
|
],
|
||||||
"textdecoder-streaming.any.js": false,
|
"textdecoder-streaming.any.html": false,
|
||||||
"textdecoder-utf16-surrogates.any.js": true,
|
"textdecoder-utf16-surrogates.any.html": true,
|
||||||
"textencoder-constructor-non-utf.any.js": [
|
"textencoder-constructor-non-utf.any.html": [
|
||||||
"Encoding argument supported for decode: EUC-JP",
|
"Encoding argument supported for decode: EUC-JP",
|
||||||
"Encoding argument supported for decode: ISO-2022-JP",
|
"Encoding argument supported for decode: ISO-2022-JP",
|
||||||
"Encoding argument supported for decode: Shift_JIS",
|
"Encoding argument supported for decode: Shift_JIS",
|
||||||
"Encoding argument supported for decode: EUC-KR",
|
"Encoding argument supported for decode: EUC-KR",
|
||||||
"Encoding argument supported for decode: x-user-defined"
|
"Encoding argument supported for decode: x-user-defined"
|
||||||
],
|
],
|
||||||
"textencoder-utf16-surrogates.any.js": true,
|
"textencoder-utf16-surrogates.any.html": true,
|
||||||
"unsupported-encodings.any.js": false,
|
"unsupported-encodings.any.html": false,
|
||||||
"textdecoder-arguments.any.js": false
|
"textdecoder-arguments.any.html": false
|
||||||
},
|
},
|
||||||
"hr-time": {
|
"hr-time": {
|
||||||
"monotonic-clock.any.js": true,
|
"monotonic-clock.any.html": true,
|
||||||
"basic.any.js": [
|
"basic.any.html": [
|
||||||
"Performance interface extends EventTarget."
|
"Performance interface extends EventTarget."
|
||||||
],
|
],
|
||||||
"idlharness.any.js": [
|
"idlharness.any.html": [
|
||||||
"Performance interface: existence and properties of interface object",
|
"Performance interface: existence and properties of interface object",
|
||||||
"Performance interface: existence and properties of interface prototype object",
|
"Performance interface: existence and properties of interface prototype object",
|
||||||
"Performance interface: operation now()",
|
"Performance interface: operation now()",
|
||||||
|
@ -161,7 +164,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"streams": {
|
"streams": {
|
||||||
"idlharness.any.js": [
|
"idlharness.any.html": [
|
||||||
"ReadableStream interface object length",
|
"ReadableStream interface object length",
|
||||||
"ReadableStream interface: attribute locked",
|
"ReadableStream interface: attribute locked",
|
||||||
"ReadableStream interface: operation cancel(optional any)",
|
"ReadableStream interface: operation cancel(optional any)",
|
||||||
|
@ -286,14 +289,14 @@
|
||||||
"CountQueuingStrategy interface: new CountQueuingStrategy({ highWaterMark: 5 }) must inherit property \"highWaterMark\" with the proper type"
|
"CountQueuingStrategy interface: new CountQueuingStrategy({ highWaterMark: 5 }) must inherit property \"highWaterMark\" with the proper type"
|
||||||
],
|
],
|
||||||
"piping": {
|
"piping": {
|
||||||
"abort.any.js": [
|
"abort.any.html": [
|
||||||
"a signal argument 'null' should cause pipeTo() to reject",
|
"a signal argument 'null' should cause pipeTo() to reject",
|
||||||
"a signal argument 'AbortSignal' should cause pipeTo() to reject",
|
"a signal argument 'AbortSignal' should cause pipeTo() to reject",
|
||||||
"a signal argument 'true' should cause pipeTo() to reject",
|
"a signal argument 'true' should cause pipeTo() to reject",
|
||||||
"a signal argument '-1' should cause pipeTo() to reject",
|
"a signal argument '-1' should cause pipeTo() to reject",
|
||||||
"a signal argument '[object AbortSignal]' should cause pipeTo() to reject"
|
"a signal argument '[object AbortSignal]' should cause pipeTo() to reject"
|
||||||
],
|
],
|
||||||
"close-propagation-backward.any.js": [
|
"close-propagation-backward.any.html": [
|
||||||
"Closing must be propagated backward: starts closed; preventCancel = null (falsy); fulfilled cancel promise",
|
"Closing must be propagated backward: starts closed; preventCancel = null (falsy); fulfilled cancel promise",
|
||||||
"Closing must be propagated backward: starts closed; preventCancel = 0 (falsy); fulfilled cancel promise",
|
"Closing must be propagated backward: starts closed; preventCancel = 0 (falsy); fulfilled cancel promise",
|
||||||
"Closing must be propagated backward: starts closed; preventCancel = -0 (falsy); fulfilled cancel promise",
|
"Closing must be propagated backward: starts closed; preventCancel = -0 (falsy); fulfilled cancel promise",
|
||||||
|
@ -304,7 +307,7 @@
|
||||||
"Closing must be propagated backward: starts closed; preventCancel = Symbol() (truthy)",
|
"Closing must be propagated backward: starts closed; preventCancel = Symbol() (truthy)",
|
||||||
"Closing must be propagated backward: starts closed; preventCancel = [object Object] (truthy)"
|
"Closing must be propagated backward: starts closed; preventCancel = [object Object] (truthy)"
|
||||||
],
|
],
|
||||||
"close-propagation-forward.any.js": [
|
"close-propagation-forward.any.html": [
|
||||||
"Closing must be propagated forward: starts closed; preventClose = null (falsy); fulfilled close promise",
|
"Closing must be propagated forward: starts closed; preventClose = null (falsy); fulfilled close promise",
|
||||||
"Closing must be propagated forward: starts closed; preventClose = 0 (falsy); fulfilled close promise",
|
"Closing must be propagated forward: starts closed; preventClose = 0 (falsy); fulfilled close promise",
|
||||||
"Closing must be propagated forward: starts closed; preventClose = -0 (falsy); fulfilled close promise",
|
"Closing must be propagated forward: starts closed; preventClose = -0 (falsy); fulfilled close promise",
|
||||||
|
@ -315,7 +318,7 @@
|
||||||
"Closing must be propagated forward: starts closed; preventClose = Symbol() (truthy)",
|
"Closing must be propagated forward: starts closed; preventClose = Symbol() (truthy)",
|
||||||
"Closing must be propagated forward: starts closed; preventClose = [object Object] (truthy)"
|
"Closing must be propagated forward: starts closed; preventClose = [object Object] (truthy)"
|
||||||
],
|
],
|
||||||
"error-propagation-backward.any.js": [
|
"error-propagation-backward.any.html": [
|
||||||
"Errors must be propagated backward: becomes errored before piping due to write; preventCancel = null (falsy); fulfilled cancel promise",
|
"Errors must be propagated backward: becomes errored before piping due to write; preventCancel = null (falsy); fulfilled cancel promise",
|
||||||
"Errors must be propagated backward: becomes errored before piping due to write; preventCancel = 0 (falsy); fulfilled cancel promise",
|
"Errors must be propagated backward: becomes errored before piping due to write; preventCancel = 0 (falsy); fulfilled cancel promise",
|
||||||
"Errors must be propagated backward: becomes errored before piping due to write; preventCancel = -0 (falsy); fulfilled cancel promise",
|
"Errors must be propagated backward: becomes errored before piping due to write; preventCancel = -0 (falsy); fulfilled cancel promise",
|
||||||
|
@ -326,7 +329,7 @@
|
||||||
"Errors must be propagated backward: becomes errored before piping due to write; preventCancel = Symbol() (truthy)",
|
"Errors must be propagated backward: becomes errored before piping due to write; preventCancel = Symbol() (truthy)",
|
||||||
"Errors must be propagated backward: becomes errored before piping due to write; preventCancel = [object Object] (truthy)"
|
"Errors must be propagated backward: becomes errored before piping due to write; preventCancel = [object Object] (truthy)"
|
||||||
],
|
],
|
||||||
"error-propagation-forward.any.js": [
|
"error-propagation-forward.any.html": [
|
||||||
"Errors must be propagated forward: starts errored; preventAbort = null (falsy); fulfilled abort promise",
|
"Errors must be propagated forward: starts errored; preventAbort = null (falsy); fulfilled abort promise",
|
||||||
"Errors must be propagated forward: starts errored; preventAbort = 0 (falsy); fulfilled abort promise",
|
"Errors must be propagated forward: starts errored; preventAbort = 0 (falsy); fulfilled abort promise",
|
||||||
"Errors must be propagated forward: starts errored; preventAbort = -0 (falsy); fulfilled abort promise",
|
"Errors must be propagated forward: starts errored; preventAbort = -0 (falsy); fulfilled abort promise",
|
||||||
|
@ -337,22 +340,21 @@
|
||||||
"Errors must be propagated forward: starts errored; preventAbort = Symbol() (truthy)",
|
"Errors must be propagated forward: starts errored; preventAbort = Symbol() (truthy)",
|
||||||
"Errors must be propagated forward: starts errored; preventAbort = [object Object] (truthy)"
|
"Errors must be propagated forward: starts errored; preventAbort = [object Object] (truthy)"
|
||||||
],
|
],
|
||||||
"flow-control.any.js": true,
|
"flow-control.any.html": true,
|
||||||
"general.any.js": [
|
"general.any.html": [
|
||||||
"pipeTo must check the brand of its ReadableStream this value",
|
"pipeTo must check the brand of its ReadableStream this value",
|
||||||
"pipeTo must check the brand of its WritableStream argument",
|
"pipeTo must check the brand of its WritableStream argument",
|
||||||
"pipeTo() promise should resolve if null is passed"
|
"pipeTo() promise should resolve if null is passed"
|
||||||
],
|
],
|
||||||
"multiple-propagation.any.js": true,
|
"multiple-propagation.any.html": true,
|
||||||
"pipe-through.any.js": true,
|
"pipe-through.any.html": true,
|
||||||
"then-interception.any.js": true,
|
"then-interception.any.html": true,
|
||||||
"throwing-options.any.js": false,
|
"throwing-options.any.html": false,
|
||||||
"transform-streams.any.js": true
|
"transform-streams.any.html": true
|
||||||
},
|
},
|
||||||
"queuing-strategies-size-function-per-global.window.js": false,
|
"queuing-strategies.any.html": true,
|
||||||
"queuing-strategies.any.js": true,
|
|
||||||
"readable-byte-streams": {
|
"readable-byte-streams": {
|
||||||
"bad-buffers-and-views.any.js": [
|
"bad-buffers-and-views.any.html": [
|
||||||
"ReadableStream with byte source: respond() throws if the BYOB request's buffer has been detached (in the readable state)",
|
"ReadableStream with byte source: respond() throws if the BYOB request's buffer has been detached (in the readable state)",
|
||||||
"ReadableStream with byte source: respond() throws if the BYOB request's buffer has been detached (in the closed state)",
|
"ReadableStream with byte source: respond() throws if the BYOB request's buffer has been detached (in the closed state)",
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer has been detached (in the readable state)",
|
"ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer has been detached (in the readable state)",
|
||||||
|
@ -367,8 +369,8 @@
|
||||||
"ReadableStream with byte source: reading into a zero-length buffer rejects",
|
"ReadableStream with byte source: reading into a zero-length buffer rejects",
|
||||||
"ReadableStream with byte source: reading into a zero-length view on a non-zero-length buffer rejects"
|
"ReadableStream with byte source: reading into a zero-length view on a non-zero-length buffer rejects"
|
||||||
],
|
],
|
||||||
"construct-byob-request.any.js": false,
|
"construct-byob-request.any.html": false,
|
||||||
"general.any.js": [
|
"general.any.html": [
|
||||||
"getReader({mode: \"byob\"}) throws on non-bytes streams",
|
"getReader({mode: \"byob\"}) throws on non-bytes streams",
|
||||||
"ReadableStream with byte source can be constructed with no errors",
|
"ReadableStream with byte source can be constructed with no errors",
|
||||||
"getReader({mode}) must perform ToString()",
|
"getReader({mode}) must perform ToString()",
|
||||||
|
@ -425,7 +427,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"readable-streams": {
|
"readable-streams": {
|
||||||
"async-iterator.any.js": [
|
"async-iterator.any.html": [
|
||||||
"Async iterator instances should have the correct list of properties",
|
"Async iterator instances should have the correct list of properties",
|
||||||
"values() throws if there's already a lock",
|
"values() throws if there's already a lock",
|
||||||
"return() should unlock the stream synchronously when preventCancel = false",
|
"return() should unlock the stream synchronously when preventCancel = false",
|
||||||
|
@ -444,76 +446,76 @@
|
||||||
"return() rejects if the stream has errored",
|
"return() rejects if the stream has errored",
|
||||||
"next() that succeeds; next() that reports an error; next()"
|
"next() that succeeds; next() that reports an error; next()"
|
||||||
],
|
],
|
||||||
"bad-strategies.any.js": true,
|
"bad-strategies.any.html": true,
|
||||||
"bad-underlying-sources.any.js": true,
|
"bad-underlying-sources.any.html": true,
|
||||||
"cancel.any.js": false,
|
"cancel.any.html": false,
|
||||||
"constructor.any.js": false,
|
"constructor.any.html": false,
|
||||||
"count-queuing-strategy-integration.any.js": true,
|
"count-queuing-strategy-integration.any.html": true,
|
||||||
"default-reader.any.js": true,
|
"default-reader.any.html": true,
|
||||||
"floating-point-total-queue-size.any.js": true,
|
"floating-point-total-queue-size.any.html": true,
|
||||||
"garbage-collection.any.js": true,
|
"garbage-collection.any.html": true,
|
||||||
"general.any.js": [
|
"general.any.html": [
|
||||||
"ReadableStream: if pull rejects, it should error the stream"
|
"ReadableStream: if pull rejects, it should error the stream"
|
||||||
],
|
],
|
||||||
"patched-global.any.js": true,
|
"patched-global.any.html": true,
|
||||||
"reentrant-strategies.any.js": true,
|
"reentrant-strategies.any.html": true,
|
||||||
"tee.any.js": false,
|
"tee.any.html": false,
|
||||||
"templated.any.js": [
|
"templated.any.html": [
|
||||||
"ReadableStream (empty) reader: canceling via the stream should fail"
|
"ReadableStream (empty) reader: canceling via the stream should fail"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"transform-streams": {
|
"transform-streams": {
|
||||||
"backpressure.any.js": true,
|
"backpressure.any.html": true,
|
||||||
"errors.any.js": true,
|
"errors.any.html": true,
|
||||||
"flush.any.js": true,
|
"flush.any.html": true,
|
||||||
"general.any.js": true,
|
"general.any.html": true,
|
||||||
"lipfuzz.any.js": true,
|
"lipfuzz.any.html": true,
|
||||||
"patched-global.any.js": [
|
"patched-global.any.html": [
|
||||||
"TransformStream constructor should not call setters for highWaterMark or size"
|
"TransformStream constructor should not call setters for highWaterMark or size"
|
||||||
],
|
],
|
||||||
"properties.any.js": true,
|
"properties.any.html": true,
|
||||||
"reentrant-strategies.any.js": true,
|
"reentrant-strategies.any.html": true,
|
||||||
"strategies.any.js": true,
|
"strategies.any.html": true,
|
||||||
"terminate.any.js": [
|
"terminate.any.html": [
|
||||||
"controller.terminate() inside flush() should not prevent writer.close() from succeeding"
|
"controller.terminate() inside flush() should not prevent writer.close() from succeeding"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"writable-streams": {
|
"writable-streams": {
|
||||||
"aborting.any.js": false,
|
"aborting.any.html": false,
|
||||||
"bad-strategies.any.js": [
|
"bad-strategies.any.html": [
|
||||||
"reject any non-function value for strategy.size",
|
"reject any non-function value for strategy.size",
|
||||||
"Writable stream: invalid size beats invalid highWaterMark"
|
"Writable stream: invalid size beats invalid highWaterMark"
|
||||||
],
|
],
|
||||||
"bad-underlying-sinks.any.js": true,
|
"bad-underlying-sinks.any.html": true,
|
||||||
"byte-length-queuing-strategy.any.js": true,
|
"byte-length-queuing-strategy.any.html": true,
|
||||||
"close.any.js": false,
|
"close.any.html": false,
|
||||||
"constructor.any.js": [
|
"constructor.any.html": [
|
||||||
"underlyingSink argument should be converted after queuingStrategy argument",
|
"underlyingSink argument should be converted after queuingStrategy argument",
|
||||||
"WritableStreamDefaultController constructor should throw",
|
"WritableStreamDefaultController constructor should throw",
|
||||||
"WritableStreamDefaultController constructor should throw when passed an initialised WritableStream",
|
"WritableStreamDefaultController constructor should throw when passed an initialised WritableStream",
|
||||||
"WritableStreamDefaultWriter should throw unless passed a WritableStream"
|
"WritableStreamDefaultWriter should throw unless passed a WritableStream"
|
||||||
],
|
],
|
||||||
"count-queuing-strategy.any.js": true,
|
"count-queuing-strategy.any.html": true,
|
||||||
"error.any.js": true,
|
"error.any.html": true,
|
||||||
"floating-point-total-queue-size.any.js": true,
|
"floating-point-total-queue-size.any.html": true,
|
||||||
"general.any.js": true,
|
"general.any.html": true,
|
||||||
"properties.any.js": true,
|
"properties.any.html": true,
|
||||||
"reentrant-strategy.any.js": true,
|
"reentrant-strategy.any.html": true,
|
||||||
"start.any.js": true,
|
"start.any.html": true,
|
||||||
"write.any.js": true
|
"write.any.html": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"user-timing": {
|
"user-timing": {
|
||||||
"buffered-flag.any.js": false,
|
"buffered-flag.any.html": false,
|
||||||
"case-sensitivity.any.js": false,
|
"case-sensitivity.any.html": false,
|
||||||
"clear_all_marks.any.js": true,
|
"clear_all_marks.any.html": true,
|
||||||
"clear_all_measures.any.js": true,
|
"clear_all_measures.any.html": true,
|
||||||
"clear_non_existent_mark.any.js": true,
|
"clear_non_existent_mark.any.html": true,
|
||||||
"clear_non_existent_measure.any.js": true,
|
"clear_non_existent_measure.any.html": true,
|
||||||
"clear_one_mark.any.js": true,
|
"clear_one_mark.any.html": true,
|
||||||
"clear_one_measure.any.js": true,
|
"clear_one_measure.any.html": true,
|
||||||
"entry_type.any.js": true,
|
"entry_type.any.html": true,
|
||||||
"idlharness.any.js": [
|
"idlharness.any.html": [
|
||||||
"PerformanceMark interface: attribute detail",
|
"PerformanceMark interface: attribute detail",
|
||||||
"PerformanceMeasure interface object length",
|
"PerformanceMeasure interface object length",
|
||||||
"PerformanceMeasure interface: attribute detail",
|
"PerformanceMeasure interface: attribute detail",
|
||||||
|
@ -524,139 +526,135 @@
|
||||||
"Performance interface: calling mark(DOMString, optional PerformanceMarkOptions) on performance with too few arguments must throw TypeError",
|
"Performance interface: calling mark(DOMString, optional PerformanceMarkOptions) on performance with too few arguments must throw TypeError",
|
||||||
"Performance interface: calling measure(DOMString, optional (DOMString or PerformanceMeasureOptions), optional DOMString) on performance with too few arguments must throw TypeError"
|
"Performance interface: calling measure(DOMString, optional (DOMString or PerformanceMeasureOptions), optional DOMString) on performance with too few arguments must throw TypeError"
|
||||||
],
|
],
|
||||||
"mark-entry-constructor.any.js": true,
|
"mark-entry-constructor.any.html": true,
|
||||||
"mark-errors.any.js": true,
|
"mark-errors.any.html": true,
|
||||||
"mark-l3.any.js": false,
|
"mark-l3.any.html": false,
|
||||||
"mark-measure-return-objects.any.js": true,
|
"mark-measure-return-objects.any.html": true,
|
||||||
"mark.any.js": true,
|
"mark.any.html": true,
|
||||||
"measure-l3.any.js": true,
|
"measure-l3.any.html": true,
|
||||||
"measure-with-dict.any.js": [
|
"measure-with-dict.any.html": [
|
||||||
"measure entries' detail and start/end are customizable"
|
"measure entries' detail and start/end are customizable"
|
||||||
],
|
],
|
||||||
"measure_syntax_err.any.js": true,
|
"measure_syntax_err.any.html": true,
|
||||||
"structured-serialize-detail.any.js": true,
|
"structured-serialize-detail.any.html": true,
|
||||||
"supported-usertiming-types.any.js": false,
|
"supported-usertiming-types.any.html": false,
|
||||||
"user_timing_exists.any.js": true
|
"user_timing_exists.any.html": true
|
||||||
},
|
},
|
||||||
"wasm": {
|
"wasm": {
|
||||||
"jsapi": {
|
"jsapi": {
|
||||||
"constructor": {
|
"constructor": {
|
||||||
"compile.any.js": true,
|
"compile.any.html": true,
|
||||||
"instantiate-bad-imports.any.js": false,
|
"instantiate-bad-imports.any.html": false,
|
||||||
"instantiate.any.js": [
|
"instantiate.any.html": [
|
||||||
"Synchronous options handling: Buffer argument"
|
"Synchronous options handling: Buffer argument"
|
||||||
],
|
],
|
||||||
"multi-value.any.js": true,
|
"multi-value.any.html": true,
|
||||||
"toStringTag.any.js": true,
|
"toStringTag.any.html": true,
|
||||||
"validate.any.js": true
|
"validate.any.html": true
|
||||||
},
|
},
|
||||||
"global": {
|
"global": {
|
||||||
"constructor.any.js": true,
|
"constructor.any.html": true,
|
||||||
"toString.any.js": true,
|
"toString.any.html": true,
|
||||||
"type.tentative.any.js": false,
|
"type.tentative.any.html": false,
|
||||||
"value-get-set.any.js": true,
|
"value-get-set.any.html": true,
|
||||||
"valueOf.any.js": true
|
"valueOf.any.html": true
|
||||||
},
|
},
|
||||||
"idlharness.any.js": [
|
"idlharness.any.html": [
|
||||||
"Table interface: operation set(unsigned long, optional any)"
|
"Table interface: operation set(unsigned long, optional any)"
|
||||||
],
|
],
|
||||||
"instance": {
|
"instance": {
|
||||||
"constructor-bad-imports.any.js": false,
|
"constructor-bad-imports.any.html": false,
|
||||||
"constructor-caching.any.js": true,
|
"constructor-caching.any.html": true,
|
||||||
"constructor.any.js": true,
|
"constructor.any.html": true,
|
||||||
"exports.any.js": [
|
"exports.any.html": [
|
||||||
"Setting (sloppy mode)"
|
"Setting (sloppy mode)"
|
||||||
],
|
],
|
||||||
"toString.any.js": true
|
"toString.any.html": true
|
||||||
},
|
},
|
||||||
"interface.any.js": [
|
"interface.any.html": [
|
||||||
"WebAssembly: property descriptor"
|
"WebAssembly: property descriptor"
|
||||||
],
|
],
|
||||||
"memory": {
|
"memory": {
|
||||||
"buffer.any.js": [
|
"buffer.any.html": [
|
||||||
"Setting (sloppy mode)"
|
"Setting (sloppy mode)"
|
||||||
],
|
],
|
||||||
"constructor.any.js": true,
|
"constructor.any.html": true,
|
||||||
"grow.any.js": true,
|
"grow.any.html": true,
|
||||||
"toString.any.js": true,
|
"toString.any.html": true,
|
||||||
"type.tentative.any.js": false,
|
"type.tentative.any.html": false,
|
||||||
"constructor-shared.tentative.any.js": true,
|
"constructor-shared.tentative.any.html": true,
|
||||||
"constructor-types.tentative.any.js": false
|
"constructor-types.tentative.any.html": false
|
||||||
},
|
},
|
||||||
"module": {
|
"module": {
|
||||||
"constructor.any.js": true,
|
"constructor.any.html": true,
|
||||||
"customSections.any.js": true,
|
"customSections.any.html": true,
|
||||||
"exports.any.js": true,
|
"exports.any.html": true,
|
||||||
"imports.any.js": true,
|
"imports.any.html": true,
|
||||||
"toString.any.js": true
|
"toString.any.html": true
|
||||||
},
|
},
|
||||||
"prototypes.any.js": false,
|
"prototypes.any.html": false,
|
||||||
"table": {
|
"table": {
|
||||||
"constructor.any.js": true,
|
"constructor.any.html": true,
|
||||||
"get-set.any.js": true,
|
"get-set.any.html": true,
|
||||||
"grow.any.js": true,
|
"grow.any.html": true,
|
||||||
"length.any.js": [
|
"length.any.html": [
|
||||||
"Setting (sloppy mode)"
|
"Setting (sloppy mode)"
|
||||||
],
|
],
|
||||||
"toString.any.js": true,
|
"toString.any.html": true,
|
||||||
"constructor-reftypes.tentative.any.js": [
|
"constructor-reftypes.tentative.any.html": [
|
||||||
"initialize externref table with default value",
|
"initialize externref table with default value",
|
||||||
"initialize anyfunc table with default value",
|
"initialize anyfunc table with default value",
|
||||||
"initialize anyfunc table with a bad default value"
|
"initialize anyfunc table with a bad default value"
|
||||||
],
|
],
|
||||||
"constructor-types.tentative.any.js": false,
|
"constructor-types.tentative.any.html": false,
|
||||||
"grow-reftypes.tentative.any.js": false,
|
"grow-reftypes.tentative.any.html": false,
|
||||||
"set-reftypes.tentative.any.js": false,
|
"set-reftypes.tentative.any.html": false,
|
||||||
"type.tentative.any.js": false
|
"type.tentative.any.html": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"serialization": {
|
"serialization": {
|
||||||
"arraybuffer": {
|
|
||||||
"transfer.window.js": false
|
|
||||||
},
|
|
||||||
"module": {
|
"module": {
|
||||||
"nested-worker-success.any.js": false,
|
"serialization-via-idb.any.html": false,
|
||||||
"serialization-via-idb.any.js": false,
|
"serialization-via-notifications-api.any.html": false
|
||||||
"serialization-via-notifications-api.any.js": false
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"webapi": {
|
"webapi": {
|
||||||
"abort.any.js": false,
|
"abort.any.html": false,
|
||||||
"body.any.js": false,
|
"body.any.html": false,
|
||||||
"contenttype.any.js": false,
|
"contenttype.any.html": false,
|
||||||
"empty-body.any.js": false,
|
"empty-body.any.html": false,
|
||||||
"historical.any.js": false,
|
"historical.any.html": false,
|
||||||
"idlharness.any.js": [
|
"idlharness.any.html": [
|
||||||
"WebAssembly namespace: operation compileStreaming(Promise<Response>)",
|
"WebAssembly namespace: operation compileStreaming(Promise<Response>)",
|
||||||
"WebAssembly namespace: operation instantiateStreaming(Promise<Response>, optional object)"
|
"WebAssembly namespace: operation instantiateStreaming(Promise<Response>, optional object)"
|
||||||
],
|
],
|
||||||
"instantiateStreaming-bad-imports.any.js": false,
|
"instantiateStreaming-bad-imports.any.html": false,
|
||||||
"instantiateStreaming.any.js": false,
|
"instantiateStreaming.any.html": false,
|
||||||
"invalid-args.any.js": false,
|
"invalid-args.any.html": false,
|
||||||
"invalid-code.any.js": false,
|
"invalid-code.any.html": false,
|
||||||
"modified-contenttype.any.js": false,
|
"modified-contenttype.any.html": false,
|
||||||
"origin.sub.any.js": false,
|
"origin.sub.any.html": false,
|
||||||
"rejected-arg.any.js": false,
|
"rejected-arg.any.html": false,
|
||||||
"status.any.js": false
|
"status.any.html": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"WebIDL": {
|
"WebIDL": {
|
||||||
"ecmascript-binding": {
|
"ecmascript-binding": {
|
||||||
"es-exceptions": {
|
"es-exceptions": {
|
||||||
"DOMException-constants.any.js": true,
|
"DOMException-constants.any.html": true,
|
||||||
"DOMException-constructor-and-prototype.any.js": true,
|
"DOMException-constructor-and-prototype.any.html": true,
|
||||||
"DOMException-constructor-behavior.any.js": true,
|
"DOMException-constructor-behavior.any.html": true,
|
||||||
"DOMException-custom-bindings.any.js": [
|
"DOMException-custom-bindings.any.html": [
|
||||||
"does not inherit from Error: class-side"
|
"does not inherit from Error: class-side"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"url": {
|
"url": {
|
||||||
"historical.any.js": [
|
"historical.any.html": [
|
||||||
"<a> and <area>.searchParams should be undefined"
|
"<a> and <area>.searchParams should be undefined"
|
||||||
],
|
],
|
||||||
"idlharness.any.js": [
|
"idlharness.any.html": [
|
||||||
"URL interface object length",
|
"URL interface object length",
|
||||||
"URL interface: attribute href",
|
"URL interface: attribute href",
|
||||||
"URL interface: stringifier",
|
"URL interface: stringifier",
|
||||||
|
@ -684,7 +682,7 @@
|
||||||
"URLSearchParams interface: stringifier",
|
"URLSearchParams interface: stringifier",
|
||||||
"Stringification of new URLSearchParams(\"hi=there&thank=you\")"
|
"Stringification of new URLSearchParams(\"hi=there&thank=you\")"
|
||||||
],
|
],
|
||||||
"url-constructor.any.js": [
|
"url-constructor.any.html": [
|
||||||
"Parsing: <https://x/<2F>?<3F>#<23>> against <about:blank>",
|
"Parsing: <https://x/<2F>?<3F>#<23>> against <about:blank>",
|
||||||
"Parsing: <http://example.com/\ud800\udfff﷏ﷰ?\ud800\udfff﷏ﷰ> against <about:blank>",
|
"Parsing: <http://example.com/\ud800\udfff﷏ﷰ?\ud800\udfff﷏ﷰ> against <about:blank>",
|
||||||
"Parsing: <file://%43%7C> against <about:blank>",
|
"Parsing: <file://%43%7C> against <about:blank>",
|
||||||
|
@ -742,12 +740,12 @@
|
||||||
"Parsing: <> against <non-spec:/..//p>",
|
"Parsing: <> against <non-spec:/..//p>",
|
||||||
"Parsing: <path> against <non-spec:/..//p>"
|
"Parsing: <path> against <non-spec:/..//p>"
|
||||||
],
|
],
|
||||||
"url-origin.any.js": [
|
"url-origin.any.html": [
|
||||||
"Origin parsing: <http://example.com/\ud800\udfff﷏ﷰ?\ud800\udfff﷏ﷰ> against <about:blank>",
|
"Origin parsing: <http://example.com/\ud800\udfff﷏ﷰ?\ud800\udfff﷏ﷰ> against <about:blank>",
|
||||||
"Origin parsing: <https://x/<2F>?<3F>#<23>> against <about:blank>"
|
"Origin parsing: <https://x/<2F>?<3F>#<23>> against <about:blank>"
|
||||||
],
|
],
|
||||||
"url-searchparams.any.js": true,
|
"url-searchparams.any.html": true,
|
||||||
"url-setters-stripping.any.js": [
|
"url-setters-stripping.any.html": [
|
||||||
"Setting protocol with leading U+0000 (https:)",
|
"Setting protocol with leading U+0000 (https:)",
|
||||||
"Setting protocol with U+0000 before inserted colon (https:)",
|
"Setting protocol with U+0000 before inserted colon (https:)",
|
||||||
"Setting port with leading U+0000 (https:)",
|
"Setting port with leading U+0000 (https:)",
|
||||||
|
@ -765,56 +763,56 @@
|
||||||
"Setting port with leading U+001F (wpt++:)",
|
"Setting port with leading U+001F (wpt++:)",
|
||||||
"Setting pathname with trailing U+001F (wpt++:)"
|
"Setting pathname with trailing U+001F (wpt++:)"
|
||||||
],
|
],
|
||||||
"url-tojson.any.js": true,
|
"url-tojson.any.html": true,
|
||||||
"urlencoded-parser.any.js": true,
|
"urlencoded-parser.any.html": true,
|
||||||
"urlsearchparams-append.any.js": true,
|
"urlsearchparams-append.any.html": true,
|
||||||
"urlsearchparams-constructor.any.js": [
|
"urlsearchparams-constructor.any.html": [
|
||||||
"Construct with 2 unpaired surrogates (no trailing)",
|
"Construct with 2 unpaired surrogates (no trailing)",
|
||||||
"Construct with 3 unpaired surrogates (no leading)",
|
"Construct with 3 unpaired surrogates (no leading)",
|
||||||
"Construct with object with NULL, non-ASCII, and surrogate keys"
|
"Construct with object with NULL, non-ASCII, and surrogate keys"
|
||||||
],
|
],
|
||||||
"urlsearchparams-delete.any.js": true,
|
"urlsearchparams-delete.any.html": true,
|
||||||
"urlsearchparams-foreach.any.js": true,
|
"urlsearchparams-foreach.any.html": true,
|
||||||
"urlsearchparams-get.any.js": true,
|
"urlsearchparams-get.any.html": true,
|
||||||
"urlsearchparams-getall.any.js": true,
|
"urlsearchparams-getall.any.html": true,
|
||||||
"urlsearchparams-has.any.js": true,
|
"urlsearchparams-has.any.html": true,
|
||||||
"urlsearchparams-set.any.js": true,
|
"urlsearchparams-set.any.html": true,
|
||||||
"urlsearchparams-sort.any.js": [
|
"urlsearchparams-sort.any.html": [
|
||||||
"Parse and sort: <20>=x&&<26>=a",
|
"Parse and sort: <20>=x&&<26>=a",
|
||||||
"URL parse and sort: <20>=x&&<26>=a",
|
"URL parse and sort: <20>=x&&<26>=a",
|
||||||
"Parse and sort: é&e<>&é",
|
"Parse and sort: é&e<>&é",
|
||||||
"URL parse and sort: é&e<>&é"
|
"URL parse and sort: é&e<>&é"
|
||||||
],
|
],
|
||||||
"urlsearchparams-stringifier.any.js": true
|
"urlsearchparams-stringifier.any.html": true
|
||||||
},
|
},
|
||||||
"fetch": {
|
"fetch": {
|
||||||
"api": {
|
"api": {
|
||||||
"request": {
|
"request": {
|
||||||
"request-init-002.any.js": true,
|
"request-init-002.any.html": true,
|
||||||
"request-init-stream.any.js": [
|
"request-init-stream.any.html": [
|
||||||
"Constructing a Request with a Request on which body.getReader() is called",
|
"Constructing a Request with a Request on which body.getReader() is called",
|
||||||
"Constructing a Request with a Request on which body.getReader().read() is called",
|
"Constructing a Request with a Request on which body.getReader().read() is called",
|
||||||
"Constructing a Request with a Request on which read() and releaseLock() are called"
|
"Constructing a Request with a Request on which read() and releaseLock() are called"
|
||||||
],
|
],
|
||||||
"request-consume-empty.any.js": [
|
"request-consume-empty.any.html": [
|
||||||
"Consume empty FormData request body as text"
|
"Consume empty FormData request body as text"
|
||||||
],
|
],
|
||||||
"request-consume.any.js": true
|
"request-consume.any.html": true
|
||||||
},
|
},
|
||||||
"headers": {
|
"headers": {
|
||||||
"headers-basic.any.js": true,
|
"headers-basic.any.html": true,
|
||||||
"headers-casing.any.js": true,
|
"headers-casing.any.html": true,
|
||||||
"headers-combine.any.js": true,
|
"headers-combine.any.html": true,
|
||||||
"headers-errors.any.js": true,
|
"headers-errors.any.html": true,
|
||||||
"headers-normalize.any.js": true,
|
"headers-normalize.any.html": true,
|
||||||
"headers-record.any.js": true,
|
"headers-record.any.html": true,
|
||||||
"headers-structure.any.js": true
|
"headers-structure.any.html": true
|
||||||
},
|
},
|
||||||
"basic": {
|
"basic": {
|
||||||
"request-head.any.js": true,
|
"request-head.any.html": true,
|
||||||
"request-headers-case.any.js": false,
|
"request-headers-case.any.html": false,
|
||||||
"request-headers-nonascii.any.js": false,
|
"request-headers-nonascii.any.html": false,
|
||||||
"request-headers.any.js": [
|
"request-headers.any.html": [
|
||||||
"Fetch with PUT without body",
|
"Fetch with PUT without body",
|
||||||
"Fetch with PUT with body",
|
"Fetch with PUT with body",
|
||||||
"Fetch with POST without body",
|
"Fetch with POST without body",
|
||||||
|
@ -837,24 +835,17 @@
|
||||||
"Fetch with TacO and mode \"same-origin\" needs an Origin header",
|
"Fetch with TacO and mode \"same-origin\" needs an Origin header",
|
||||||
"Fetch with TacO and mode \"cors\" needs an Origin header"
|
"Fetch with TacO and mode \"cors\" needs an Origin header"
|
||||||
],
|
],
|
||||||
"text-utf8.any.js": true,
|
"text-utf8.any.html": true,
|
||||||
"accept-header.any.js": [
|
"accept-header.any.html": [
|
||||||
"Request through fetch should have a 'accept-language' header"
|
"Request through fetch should have a 'accept-language' header"
|
||||||
],
|
],
|
||||||
"conditional-get.any.js": false,
|
"conditional-get.any.html": false,
|
||||||
"error-after-response.any.js": false,
|
"error-after-response.any.html": false,
|
||||||
"header-value-combining.any.js": false,
|
"header-value-combining.any.html": false,
|
||||||
"header-value-null-byte.any.js": true,
|
"header-value-null-byte.any.html": true,
|
||||||
"historical.any.js": true,
|
"historical.any.html": true,
|
||||||
"http-response-code.any.js": true,
|
"http-response-code.any.html": true,
|
||||||
"integrity.sub.any.js": [
|
"request-upload.any.html": [
|
||||||
"Invalid integrity",
|
|
||||||
"Multiple integrities: invalid stronger than valid",
|
|
||||||
"Multiple integrities: both are invalid",
|
|
||||||
"CORS invalid integrity",
|
|
||||||
"Empty string integrity for opaque response"
|
|
||||||
],
|
|
||||||
"request-upload.any.js": [
|
|
||||||
"Fetch with POST with ReadableStream",
|
"Fetch with POST with ReadableStream",
|
||||||
"Fetch with POST with ReadableStream containing String",
|
"Fetch with POST with ReadableStream containing String",
|
||||||
"Fetch with POST with ReadableStream containing null",
|
"Fetch with POST with ReadableStream containing null",
|
||||||
|
@ -863,39 +854,48 @@
|
||||||
"Fetch with POST with ReadableStream containing Blob",
|
"Fetch with POST with ReadableStream containing Blob",
|
||||||
"Fetch with POST with text body on 421 response should be retried once on new connection."
|
"Fetch with POST with text body on 421 response should be retried once on new connection."
|
||||||
],
|
],
|
||||||
"response-url.sub.any.js": true,
|
"response-url.sub.any.html": true,
|
||||||
"scheme-about.any.js": true,
|
"scheme-about.any.html": true,
|
||||||
"scheme-blob.sub.any.js": true,
|
"scheme-blob.sub.any.html": true,
|
||||||
"scheme-data.any.js": false,
|
"scheme-data.any.html": [
|
||||||
"scheme-others.sub.any.js": true,
|
"Fetching [HEAD] data:,response%27s%20body is OK"
|
||||||
"stream-response.any.js": true,
|
],
|
||||||
"stream-safe-creation.any.js": false
|
"scheme-others.sub.any.html": true,
|
||||||
|
"stream-response.any.html": true,
|
||||||
|
"stream-safe-creation.any.html": [
|
||||||
|
"throwing Object.prototype.start accessor should not affect stream creation by 'fetch'",
|
||||||
|
"Object.prototype.start accessor returning invalid value should not affect stream creation by 'fetch'",
|
||||||
|
"throwing Object.prototype.size accessor should not affect stream creation by 'fetch'",
|
||||||
|
"Object.prototype.size accessor returning invalid value should not affect stream creation by 'fetch'",
|
||||||
|
"throwing Object.prototype.highWaterMark accessor should not affect stream creation by 'fetch'",
|
||||||
|
"Object.prototype.highWaterMark accessor returning invalid value should not affect stream creation by 'fetch'"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"response": {
|
"response": {
|
||||||
"json.any.js": true,
|
"json.any.html": true,
|
||||||
"response-init-001.any.js": true,
|
"response-init-001.any.html": true,
|
||||||
"response-init-002.any.js": true,
|
"response-init-002.any.html": true,
|
||||||
"response-static-error.any.js": true,
|
"response-static-error.any.html": true,
|
||||||
"response-static-redirect.any.js": true,
|
"response-static-redirect.any.html": true,
|
||||||
"response-stream-disturbed-1.any.js": true,
|
"response-stream-disturbed-1.any.html": true,
|
||||||
"response-stream-disturbed-2.any.js": true,
|
"response-stream-disturbed-2.any.html": true,
|
||||||
"response-stream-disturbed-3.any.js": true,
|
"response-stream-disturbed-3.any.html": true,
|
||||||
"response-stream-disturbed-4.any.js": true,
|
"response-stream-disturbed-4.any.html": true,
|
||||||
"response-stream-disturbed-5.any.js": true,
|
"response-stream-disturbed-5.any.html": true,
|
||||||
"response-stream-disturbed-6.any.js": true,
|
"response-stream-disturbed-6.any.html": true,
|
||||||
"response-stream-disturbed-by-pipe.any.js": true,
|
"response-stream-disturbed-by-pipe.any.html": true,
|
||||||
"response-stream-with-broken-then.any.js": [
|
"response-stream-with-broken-then.any.html": [
|
||||||
"Attempt to inject {done: false, value: bye} via Object.prototype.then.",
|
"Attempt to inject {done: false, value: bye} via Object.prototype.then.",
|
||||||
"Attempt to inject value: undefined via Object.prototype.then.",
|
"Attempt to inject value: undefined via Object.prototype.then.",
|
||||||
"Attempt to inject undefined via Object.prototype.then.",
|
"Attempt to inject undefined via Object.prototype.then.",
|
||||||
"Attempt to inject 8.2 via Object.prototype.then.",
|
"Attempt to inject 8.2 via Object.prototype.then.",
|
||||||
"intercepting arraybuffer to text conversion via Object.prototype.then should not be possible"
|
"intercepting arraybuffer to text conversion via Object.prototype.then should not be possible"
|
||||||
],
|
],
|
||||||
"response-error-from-stream.any.js": true,
|
"response-error-from-stream.any.html": true,
|
||||||
"response-error.any.js": true,
|
"response-error.any.html": true,
|
||||||
"response-from-stream.any.js": true,
|
"response-from-stream.any.html": true,
|
||||||
"response-cancel-stream.any.js": true,
|
"response-cancel-stream.any.html": true,
|
||||||
"response-clone.any.js": [
|
"response-clone.any.html": [
|
||||||
"Check response clone use structureClone for teed ReadableStreams (Int8Arraychunk)",
|
"Check response clone use structureClone for teed ReadableStreams (Int8Arraychunk)",
|
||||||
"Check response clone use structureClone for teed ReadableStreams (Int16Arraychunk)",
|
"Check response clone use structureClone for teed ReadableStreams (Int16Arraychunk)",
|
||||||
"Check response clone use structureClone for teed ReadableStreams (Int32Arraychunk)",
|
"Check response clone use structureClone for teed ReadableStreams (Int32Arraychunk)",
|
||||||
|
@ -908,20 +908,20 @@
|
||||||
"Check response clone use structureClone for teed ReadableStreams (Float64Arraychunk)",
|
"Check response clone use structureClone for teed ReadableStreams (Float64Arraychunk)",
|
||||||
"Check response clone use structureClone for teed ReadableStreams (DataViewchunk)"
|
"Check response clone use structureClone for teed ReadableStreams (DataViewchunk)"
|
||||||
],
|
],
|
||||||
"response-consume-empty.any.js": [
|
"response-consume-empty.any.html": [
|
||||||
"Consume empty FormData response body as text"
|
"Consume empty FormData response body as text"
|
||||||
],
|
],
|
||||||
"response-consume-stream.any.js": true
|
"response-consume-stream.any.html": true
|
||||||
},
|
},
|
||||||
"body": {
|
"body": {
|
||||||
"mime-type.any.js": true
|
"mime-type.any.html": true
|
||||||
},
|
},
|
||||||
"redirect": {
|
"redirect": {
|
||||||
"redirect-count.any.js": true,
|
"redirect-count.any.html": true,
|
||||||
"redirect-empty-location.any.js": [
|
"redirect-empty-location.any.html": [
|
||||||
"redirect response with empty Location, manual mode"
|
"redirect response with empty Location, manual mode"
|
||||||
],
|
],
|
||||||
"redirect-location.any.js": [
|
"redirect-location.any.html": [
|
||||||
"Redirect 301 in \"manual\" mode without location",
|
"Redirect 301 in \"manual\" mode without location",
|
||||||
"Redirect 301 in \"manual\" mode with invalid location",
|
"Redirect 301 in \"manual\" mode with invalid location",
|
||||||
"Redirect 301 in \"manual\" mode with data location",
|
"Redirect 301 in \"manual\" mode with data location",
|
||||||
|
@ -938,11 +938,11 @@
|
||||||
"Redirect 308 in \"manual\" mode with invalid location",
|
"Redirect 308 in \"manual\" mode with invalid location",
|
||||||
"Redirect 308 in \"manual\" mode with data location"
|
"Redirect 308 in \"manual\" mode with data location"
|
||||||
],
|
],
|
||||||
"redirect-method.any.js": true,
|
"redirect-method.any.html": true,
|
||||||
"redirect-schemes.any.js": true,
|
"redirect-schemes.any.html": true,
|
||||||
"redirect-to-dataurl.any.js": true
|
"redirect-to-dataurl.any.html": true
|
||||||
},
|
},
|
||||||
"idlharness.any.js": [
|
"idlharness.any.html": [
|
||||||
"Headers interface: operation append(ByteString, ByteString)",
|
"Headers interface: operation append(ByteString, ByteString)",
|
||||||
"Headers interface: operation delete(ByteString)",
|
"Headers interface: operation delete(ByteString)",
|
||||||
"Headers interface: operation get(ByteString)",
|
"Headers interface: operation get(ByteString)",
|
||||||
|
@ -994,46 +994,46 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"data-urls": {
|
"data-urls": {
|
||||||
"base64.any.js": true,
|
"base64.any.html": true,
|
||||||
"processing.any.js": [
|
"processing.any.html": [
|
||||||
"\"data:text/plain;a=\\\",\\\",X\""
|
"\"data:text/plain;a=\\\",\\\",X\""
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"FileAPI": {
|
"FileAPI": {
|
||||||
"blob": {
|
"blob": {
|
||||||
"Blob-array-buffer.any.js": true,
|
"Blob-array-buffer.any.html": true,
|
||||||
"Blob-stream.any.js": true,
|
"Blob-constructor.any.html": [
|
||||||
"Blob-text.any.js": true,
|
|
||||||
"Blob-constructor.any.js": [
|
|
||||||
"Passing a FrozenArray as the blobParts array should work (FrozenArray<MessagePort>)."
|
"Passing a FrozenArray as the blobParts array should work (FrozenArray<MessagePort>)."
|
||||||
],
|
],
|
||||||
"Blob-slice-overflow.any.js": true,
|
"Blob-slice-overflow.any.html": true,
|
||||||
"Blob-slice.any.js": true
|
"Blob-slice.any.html": true,
|
||||||
|
"Blob-stream.any.html": true,
|
||||||
|
"Blob-text.any.html": true
|
||||||
},
|
},
|
||||||
"file": {
|
"file": {
|
||||||
"File-constructor.any.js": true
|
"File-constructor.any.html": true
|
||||||
},
|
},
|
||||||
"fileReader.any.js": true,
|
"fileReader.any.html": true,
|
||||||
"url": {
|
"url": {
|
||||||
"url-format.any.js": true,
|
"url-format.any.html": true,
|
||||||
"url-with-fetch.any.js": [
|
"url-with-fetch.any.html": [
|
||||||
"Revoke blob URL after creating Request, will fetch"
|
"Revoke blob URL after creating Request, will fetch"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"reading-data-section": {
|
"reading-data-section": {
|
||||||
"Determining-Encoding.any.js": true,
|
"Determining-Encoding.any.html": true,
|
||||||
"FileReader-event-handler-attributes.any.js": true,
|
"FileReader-event-handler-attributes.any.html": true,
|
||||||
"FileReader-multiple-reads.any.js": true,
|
"FileReader-multiple-reads.any.html": true,
|
||||||
"filereader_abort.any.js": true,
|
"filereader_abort.any.html": true,
|
||||||
"filereader_error.any.js": true,
|
"filereader_error.any.html": true,
|
||||||
"filereader_events.any.js": false,
|
"filereader_events.any.html": false,
|
||||||
"filereader_readAsArrayBuffer.any.js": true,
|
"filereader_readAsArrayBuffer.any.html": true,
|
||||||
"filereader_readAsBinaryString.any.js": true,
|
"filereader_readAsBinaryString.any.html": true,
|
||||||
"filereader_readAsDataURL.any.js": true,
|
"filereader_readAsDataURL.any.html": true,
|
||||||
"filereader_readAsText.any.js": true,
|
"filereader_readAsText.any.html": true,
|
||||||
"filereader_readystate.any.js": true,
|
"filereader_readystate.any.html": true,
|
||||||
"filereader_result.any.js": [
|
"filereader_result.any.html": [
|
||||||
"result is null during \"loadstart\" event for readAsText",
|
"result is null during \"loadstart\" event for readAsText",
|
||||||
"result is null during \"loadstart\" event for readAsDataURL",
|
"result is null during \"loadstart\" event for readAsDataURL",
|
||||||
"result is null during \"loadstart\" event for readAsArrayBuffer",
|
"result is null during \"loadstart\" event for readAsArrayBuffer",
|
||||||
|
@ -1048,32 +1048,32 @@
|
||||||
"html": {
|
"html": {
|
||||||
"webappapis": {
|
"webappapis": {
|
||||||
"atob": {
|
"atob": {
|
||||||
"base64.any.js": true
|
"base64.any.html": true
|
||||||
},
|
},
|
||||||
"timers": {
|
"timers": {
|
||||||
"cleartimeout-clearinterval.any.js": true,
|
"cleartimeout-clearinterval.any.html": true,
|
||||||
"missing-timeout-setinterval.any.js": true,
|
"missing-timeout-setinterval.any.html": true,
|
||||||
"negative-setinterval.any.js": true,
|
"negative-setinterval.any.html": true,
|
||||||
"negative-settimeout.any.js": true,
|
"negative-settimeout.any.html": true,
|
||||||
"type-long-setinterval.any.js": true,
|
"type-long-setinterval.any.html": true,
|
||||||
"type-long-settimeout.any.js": true
|
"type-long-settimeout.any.html": true
|
||||||
},
|
},
|
||||||
"microtask-queuing": {
|
"microtask-queuing": {
|
||||||
"queue-microtask-exceptions.any.js": true,
|
"queue-microtask-exceptions.any.html": true,
|
||||||
"queue-microtask.any.js": true
|
"queue-microtask.any.html": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"xhr": {
|
"xhr": {
|
||||||
"formdata": {
|
"formdata": {
|
||||||
"append.any.js": true,
|
"append.any.html": true,
|
||||||
"constructor.any.js": true,
|
"constructor.any.html": true,
|
||||||
"delete.any.js": true,
|
"delete.any.html": true,
|
||||||
"foreach.any.js": true,
|
"foreach.any.html": true,
|
||||||
"get.any.js": true,
|
"get.any.html": true,
|
||||||
"has.any.js": true,
|
"has.any.html": true,
|
||||||
"set-blob.any.js": true,
|
"set-blob.any.html": true,
|
||||||
"set.any.js": true
|
"set.any.html": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -78,6 +78,8 @@ export async function runSingleTest(
|
||||||
"-A",
|
"-A",
|
||||||
"--location",
|
"--location",
|
||||||
url.toString(),
|
url.toString(),
|
||||||
|
"--cert",
|
||||||
|
join(ROOT_PATH, `./test_util/wpt/tools/certs/cacert.pem`),
|
||||||
tempFile,
|
tempFile,
|
||||||
"[]",
|
"[]",
|
||||||
],
|
],
|
||||||
|
|
|
@ -85,38 +85,6 @@ export function saveExpectation(expectation: Expectation) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function generateTestExpectations(filter: string[]) {
|
|
||||||
const manifest = getManifest();
|
|
||||||
|
|
||||||
function walk(folder: ManifestFolder, prefix: string): Expectation {
|
|
||||||
const expectation: Expectation = {};
|
|
||||||
for (const key in folder) {
|
|
||||||
const path = `${prefix}/${key}`;
|
|
||||||
const entry = folder[key];
|
|
||||||
if (Array.isArray(entry)) {
|
|
||||||
if (!filter.find((filter) => path.startsWith(filter))) continue;
|
|
||||||
if (key.endsWith(".js")) {
|
|
||||||
expectation[key] = false;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!filter.find((filter) => `${path}/`.startsWith(filter))) continue;
|
|
||||||
expectation[key] = walk(entry, path);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (const key in expectation) {
|
|
||||||
const entry = expectation[key];
|
|
||||||
if (typeof entry === "object") {
|
|
||||||
if (Object.keys(expectation[key]).length === 0) {
|
|
||||||
delete expectation[key];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return expectation;
|
|
||||||
}
|
|
||||||
|
|
||||||
return walk(manifest.items.testharness, "");
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getExpectFailForCase(
|
export function getExpectFailForCase(
|
||||||
expectation: boolean | string[],
|
expectation: boolean | string[],
|
||||||
caseName: string,
|
caseName: string,
|
||||||
|
|
Loading…
Reference in a new issue