mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 07:14:47 -05:00
f5e46c9bf2
This looks like a massive PR, but it's only a move from cli/tests -> tests, and updates of relative paths for files. This is the first step towards aggregate all of the integration test files under tests/, which will lead to a set of integration tests that can run without the CLI binary being built. While we could leave these tests under `cli`, it would require us to keep a more complex directory structure for the various test runners. In addition, we have a lot of complexity to ignore various test files in the `cli` project itself (cargo publish exclusion rules, autotests = false, etc). And finally, the `tests/` folder will eventually house the `test_ffi`, `test_napi` and other testing code, reducing the size of the root repo directory. For easier review, the extremely large and noisy "move" is in the first commit (with no changes -- just a move), while the remainder of the changes to actual files is in the second commit.
43 lines
931 B
TypeScript
43 lines
931 B
TypeScript
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);
|