summaryrefslogtreecommitdiff
path: root/tests/specs/run/fix_worker_dispatchevent
diff options
context:
space:
mode:
authorhaturau <135221985+haturatu@users.noreply.github.com>2024-11-20 01:20:47 +0900
committerGitHub <noreply@github.com>2024-11-20 01:20:47 +0900
commit85719a67e59c7aa45bead26e4942d7df8b1b42d4 (patch)
treeface0aecaac53e93ce2f23b53c48859bcf1a36ec /tests/specs/run/fix_worker_dispatchevent
parent67697bc2e4a62a9670699fd18ad0dd8efc5bd955 (diff)
parent186b52731c6bb326c4d32905c5e732d082e83465 (diff)
Merge branch 'denoland:main' into main
Diffstat (limited to 'tests/specs/run/fix_worker_dispatchevent')
-rw-r--r--tests/specs/run/fix_worker_dispatchevent/__test__.jsonc4
-rw-r--r--tests/specs/run/fix_worker_dispatchevent/fix_worker_dispatchevent.ts43
-rw-r--r--tests/specs/run/fix_worker_dispatchevent/fix_worker_dispatchevent.ts.out1
3 files changed, 48 insertions, 0 deletions
diff --git a/tests/specs/run/fix_worker_dispatchevent/__test__.jsonc b/tests/specs/run/fix_worker_dispatchevent/__test__.jsonc
new file mode 100644
index 000000000..45e49b87f
--- /dev/null
+++ b/tests/specs/run/fix_worker_dispatchevent/__test__.jsonc
@@ -0,0 +1,4 @@
+{
+ "args": "run --quiet --reload fix_worker_dispatchevent.ts",
+ "output": "fix_worker_dispatchevent.ts.out"
+}
diff --git a/tests/specs/run/fix_worker_dispatchevent/fix_worker_dispatchevent.ts b/tests/specs/run/fix_worker_dispatchevent/fix_worker_dispatchevent.ts
new file mode 100644
index 000000000..1b73b52dc
--- /dev/null
+++ b/tests/specs/run/fix_worker_dispatchevent/fix_worker_dispatchevent.ts
@@ -0,0 +1,43 @@
+const code = `
+addEventListener("message", () => {
+ postMessage("pong");
+});
+
+const context = new EventTarget();
+
+Object.defineProperty(globalThis, "dispatchEvent", {
+ value: context.dispatchEvent.bind(context),
+ writable: true,
+ enumerable: true,
+ configurable: true,
+});
+
+postMessage("start");
+`;
+
+const blob = new Blob([code], { type: "application/javascript" });
+
+const url = URL.createObjectURL(blob);
+
+const worker = new Worker(url, { type: "module" });
+
+let terminated = false;
+
+worker.addEventListener("message", (evt) => {
+ if (evt.data === "start") {
+ worker.postMessage("ping");
+ } else if (evt.data === "pong") {
+ worker.terminate();
+ terminated = true;
+ console.log("success");
+ } else {
+ throw new Error("unexpected message from worker");
+ }
+});
+
+setTimeout(() => {
+ if (!terminated) {
+ worker.terminate();
+ throw new Error("did not receive message from worker in time");
+ }
+}, 2000);
diff --git a/tests/specs/run/fix_worker_dispatchevent/fix_worker_dispatchevent.ts.out b/tests/specs/run/fix_worker_dispatchevent/fix_worker_dispatchevent.ts.out
new file mode 100644
index 000000000..2e9ba477f
--- /dev/null
+++ b/tests/specs/run/fix_worker_dispatchevent/fix_worker_dispatchevent.ts.out
@@ -0,0 +1 @@
+success