summaryrefslogtreecommitdiff
path: root/cli/tests/unit/timers_test.ts
diff options
context:
space:
mode:
authorAndreu Botella <andreu@andreubotella.com>2022-03-14 20:19:22 +0100
committerGitHub <noreply@github.com>2022-03-14 20:19:22 +0100
commit9f494dc405afc4b1b29fa4c813bd5751f26aaa36 (patch)
tree2757ee74fe3f5e9e134e1265bc71d87febc63d32 /cli/tests/unit/timers_test.ts
parent5eb0e4c2dfab4b83fbc69746d8e1143f78e9154e (diff)
feat(ext/web): Add `AbortSignal.timeout()` (#13687)
Diffstat (limited to 'cli/tests/unit/timers_test.ts')
-rw-r--r--cli/tests/unit/timers_test.ts74
1 files changed, 74 insertions, 0 deletions
diff --git a/cli/tests/unit/timers_test.ts b/cli/tests/unit/timers_test.ts
index ac0403bf7..5b9e1fa48 100644
--- a/cli/tests/unit/timers_test.ts
+++ b/cli/tests/unit/timers_test.ts
@@ -679,3 +679,77 @@ Deno.test({
Deno.refTimer(NaN);
},
});
+
+Deno.test({
+ name: "AbortSignal.timeout() with no listeners",
+ permissions: { run: true },
+ fn: async () => {
+ const [statusCode, output] = await execCode(`
+ const signal = AbortSignal.timeout(2000);
+
+ // This unref timer expires before the signal, and if it does expire, then
+ // it means the signal has kept the event loop alive.
+ const timer = setTimeout(() => console.log("Unexpected!"), 1500);
+ Deno.unrefTimer(timer);
+ `);
+ assertEquals(statusCode, 0);
+ assertEquals(output, "");
+ },
+});
+
+Deno.test({
+ name: "AbortSignal.timeout() with listeners",
+ permissions: { run: true },
+ fn: async () => {
+ const [statusCode, output] = await execCode(`
+ const signal = AbortSignal.timeout(1000);
+ signal.addEventListener("abort", () => console.log("Event fired!"));
+ `);
+ assertEquals(statusCode, 0);
+ assertEquals(output, "Event fired!\n");
+ },
+});
+
+Deno.test({
+ name: "AbortSignal.timeout() with removed listeners",
+ permissions: { run: true },
+ fn: async () => {
+ const [statusCode, output] = await execCode(`
+ const signal = AbortSignal.timeout(2000);
+
+ const callback = () => console.log("Unexpected: Event fired");
+ signal.addEventListener("abort", callback);
+
+ setTimeout(() => {
+ console.log("Removing the listener.");
+ signal.removeEventListener("abort", callback);
+ }, 500);
+
+ Deno.unrefTimer(
+ setTimeout(() => console.log("Unexpected: Unref timer"), 1500)
+ );
+ `);
+ assertEquals(statusCode, 0);
+ assertEquals(output, "Removing the listener.\n");
+ },
+});
+
+Deno.test({
+ name: "AbortSignal.timeout() with listener for a non-abort event",
+ permissions: { run: true },
+ fn: async () => {
+ const [statusCode, output] = await execCode(`
+ const signal = AbortSignal.timeout(2000);
+
+ signal.addEventListener("someOtherEvent", () => {
+ console.log("Unexpected: someOtherEvent called");
+ });
+
+ Deno.unrefTimer(
+ setTimeout(() => console.log("Unexpected: Unref timer"), 1500)
+ );
+ `);
+ assertEquals(statusCode, 0);
+ assertEquals(output, "");
+ },
+});