Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit c8d528e

Browse filesBrowse files
panvatargos
authored andcommitted
test: update WPT resources, common, streams, FileAPI, broadcastchannel
PR-URL: #46912 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
1 parent adff278 commit c8d528e
Copy full SHA for c8d528e

File tree

Expand file treeCollapse file tree

108 files changed

+2076
-5276
lines changed
Open diff view settings
Filter options

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Dismiss banner
Expand file treeCollapse file tree

108 files changed

+2076
-5276
lines changed
Open diff view settings
Collapse file

‎test/common/wpt.js‎

Copy file name to clipboardExpand all lines: test/common/wpt.js
+11-15Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -453,14 +453,13 @@ class WPTRunner {
453453
this.scriptsModifier = modifier;
454454
}
455455

456-
fullInitScript(hasSubsetScript, locationSearchString) {
456+
fullInitScript(url, metaTitle) {
457457
let { initScript } = this;
458-
if (hasSubsetScript || locationSearchString) {
459-
initScript = `${initScript}\n\n//===\nglobalThis.location ||= {};`;
460-
}
461458

462-
if (locationSearchString) {
463-
initScript = `${initScript}\n\n//===\nglobalThis.location.search = "${locationSearchString}";`;
459+
initScript = `${initScript}\n\n//===\nglobalThis.location = new URL("${url.href}");`;
460+
461+
if (metaTitle) {
462+
initScript = `${initScript}\n\n//===\nglobalThis.META_TITLE = "${metaTitle}";`;
464463
}
465464

466465
if (this.globalThisInitScripts.length === null) {
@@ -553,13 +552,13 @@ class WPTRunner {
553552
const relativePath = spec.getRelativePath();
554553
const harnessPath = fixtures.path('wpt', 'resources', 'testharness.js');
555554
const scriptsToRun = [];
556-
let hasSubsetScript = false;
555+
let needsGc = false;
557556

558557
// Scripts specified with the `// META: script=` header
559558
if (meta.script) {
560559
for (const script of meta.script) {
561-
if (script === '/common/subset-tests.js' || script === '/common/subset-tests-by-key.js') {
562-
hasSubsetScript = true;
560+
if (script === '/common/gc.js') {
561+
needsGc = true;
563562
}
564563
const obj = {
565564
filename: this.resource.toRealFilePath(relativePath, script),
@@ -592,12 +591,13 @@ class WPTRunner {
592591
testRelativePath: relativePath,
593592
wptRunner: __filename,
594593
wptPath: this.path,
595-
initScript: this.fullInitScript(hasSubsetScript, variant),
594+
initScript: this.fullInitScript(new URL(`/${relativePath.replace(/\.js$/, '.html')}${variant}`, 'http://wpt'), meta.title),
596595
harness: {
597596
code: fs.readFileSync(harnessPath, 'utf8'),
598597
filename: harnessPath,
599598
},
600599
scriptsToRun,
600+
needsGc,
601601
},
602602
});
603603
this.workers.set(testFileName, worker);
@@ -749,11 +749,7 @@ class WPTRunner {
749749
*/
750750
resultCallback(filename, test, reportResult) {
751751
const status = this.getTestStatus(test.status);
752-
const title = this.getTestTitle(filename);
753-
if (/^Untitled( \d+)?$/.test(test.name)) {
754-
test.name = `${title}${test.name.slice(8)}`;
755-
}
756-
console.log(`---- ${title} ----`);
752+
console.log(`---- ${test.name} ----`);
757753
if (status !== kPass) {
758754
this.fail(filename, test, status, reportResult);
759755
} else {
Collapse file

‎test/common/wpt/worker.js‎

Copy file name to clipboardExpand all lines: test/common/wpt/worker.js
+12-5Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,29 @@
11
'use strict';
22

3-
const { runInThisContext } = require('vm');
3+
const { runInNewContext, runInThisContext } = require('vm');
4+
const { setFlagsFromString } = require('v8');
45
const { parentPort, workerData } = require('worker_threads');
56

67
const { ResourceLoader } = require(workerData.wptRunner);
78
const resource = new ResourceLoader(workerData.wptPath);
89

9-
global.self = global;
10-
global.GLOBAL = {
10+
if (workerData.needsGc) {
11+
// See https://github.com/nodejs/node/issues/16595#issuecomment-340288680
12+
setFlagsFromString('--expose-gc');
13+
globalThis.gc = runInNewContext('gc');
14+
}
15+
16+
globalThis.self = global;
17+
globalThis.GLOBAL = {
1118
isWindow() { return false; },
1219
isShadowRealm() { return false; },
1320
};
14-
global.require = require;
21+
globalThis.require = require;
1522

1623
// This is a mock, because at the moment fetch is not implemented
1724
// in Node.js, but some tests and harness depend on this to pull
1825
// resources.
19-
global.fetch = function fetch(file) {
26+
globalThis.fetch = function fetch(file) {
2027
return resource.read(workerData.testRelativePath, file, true);
2128
};
2229

Collapse file
+59Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<!DOCTYPE html>
2+
<meta charset="utf-8">
3+
<title>Blob methods from detached frame work as expected</title>
4+
<script src="/resources/testharness.js"></script>
5+
<script src="/resources/testharnessreport.js"></script>
6+
7+
<iframe id="emptyDocumentIframe" src="../support/empty-document.html"></iframe>
8+
9+
<script>
10+
const BlobPrototypeFromDetachedFramePromise = new Promise(resolve => {
11+
emptyDocumentIframe.onload = () => {
12+
const BlobPrototype = emptyDocumentIframe.contentWindow.Blob.prototype;
13+
emptyDocumentIframe.remove();
14+
resolve(BlobPrototype);
15+
};
16+
});
17+
18+
const charCodeArrayToString = charCodeArray => Array.from(charCodeArray, c => String.fromCharCode(c)).join("");
19+
const charCodeBufferToString = charCodeBuffer => charCodeArrayToString(new Uint8Array(charCodeBuffer));
20+
21+
promise_test(async () => {
22+
const { slice } = await BlobPrototypeFromDetachedFramePromise;
23+
const blob = new Blob(["foobar"]);
24+
25+
const slicedBlob = slice.call(blob, 1, 3);
26+
assert_true(slicedBlob instanceof Blob);
27+
28+
assert_equals(await slicedBlob.text(), "oo");
29+
assert_equals(charCodeBufferToString(await slicedBlob.arrayBuffer()), "oo");
30+
31+
const reader = slicedBlob.stream().getReader();
32+
const { value } = await reader.read();
33+
assert_equals(charCodeArrayToString(value), "oo");
34+
}, "slice()");
35+
36+
promise_test(async () => {
37+
const { text } = await BlobPrototypeFromDetachedFramePromise;
38+
const blob = new Blob(["foo"]);
39+
40+
assert_equals(await text.call(blob), "foo");
41+
}, "text()");
42+
43+
promise_test(async () => {
44+
const { arrayBuffer } = await BlobPrototypeFromDetachedFramePromise;
45+
const blob = new Blob(["bar"]);
46+
47+
const charCodeBuffer = await arrayBuffer.call(blob);
48+
assert_equals(charCodeBufferToString(charCodeBuffer), "bar");
49+
}, "arrayBuffer()");
50+
51+
promise_test(async () => {
52+
const { stream } = await BlobPrototypeFromDetachedFramePromise;
53+
const blob = new Blob(["baz"]);
54+
55+
const reader = stream.call(blob).getReader();
56+
const { value } = await reader.read();
57+
assert_equals(charCodeArrayToString(value), "baz");
58+
}, "stream()");
59+
</script>

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.