aboutsummaryrefslogtreecommitdiff
path: root/test/js/web/timers/setTimeout.test.js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2023-07-11 19:14:34 -0700
committerGravatar GitHub <noreply@github.com> 2023-07-11 19:14:34 -0700
commitcbb88672f217a90db1aa1eb29cd92d5d9035b22b (patch)
tree43a00501f3cde495967e116f0b660777051551f8 /test/js/web/timers/setTimeout.test.js
parent1f900cff453700b19bca2acadfe26da4468c1282 (diff)
parent34b0e7a2bbd8bf8097341cdb0075d0908283e834 (diff)
downloadbun-jarred/esm-conditions.tar.gz
bun-jarred/esm-conditions.tar.zst
bun-jarred/esm-conditions.zip
Merge branch 'main' into jarred/esm-conditionsjarred/esm-conditions
Diffstat (limited to '')
-rw-r--r--test/js/web/timers/setTimeout.test.js51
1 files changed, 49 insertions, 2 deletions
diff --git a/test/js/web/timers/setTimeout.test.js b/test/js/web/timers/setTimeout.test.js
index dbe89dea8..eef6bbae0 100644
--- a/test/js/web/timers/setTimeout.test.js
+++ b/test/js/web/timers/setTimeout.test.js
@@ -1,5 +1,7 @@
+import { spawnSync } from "bun";
import { it, expect } from "bun:test";
-
+import { bunEnv, bunExe } from "harness";
+import path from "node:path";
it("setTimeout", async () => {
var lastID = -1;
const result = await new Promise((resolve, reject) => {
@@ -172,11 +174,56 @@ it.skip("order of setTimeouts", done => {
Promise.resolve().then(maybeDone(() => nums.push(1)));
});
+it("setTimeout -> refresh", () => {
+ const { exitCode, stdout } = spawnSync({
+ cmd: [bunExe(), path.join(import.meta.dir, "setTimeout-unref-fixture.js")],
+ env: bunEnv,
+ });
+ expect(exitCode).toBe(0);
+ expect(stdout.toString()).toBe("SUCCESS\n");
+});
+
+it("setTimeout -> unref -> ref works", () => {
+ const { exitCode, stdout } = spawnSync({
+ cmd: [bunExe(), path.join(import.meta.dir, "setTimeout-unref-fixture-4.js")],
+ env: bunEnv,
+ });
+ expect(exitCode).toBe(0);
+ expect(stdout.toString()).toBe("TEST PASSED!\n");
+});
+
+it("setTimeout -> ref -> unref works, even if there is another timer", () => {
+ const { exitCode, stdout } = spawnSync({
+ cmd: [bunExe(), path.join(import.meta.dir, "setTimeout-unref-fixture-2.js")],
+ env: bunEnv,
+ });
+ expect(exitCode).toBe(0);
+ expect(stdout.toString()).toBe("");
+});
+
+it("setTimeout -> ref -> unref works", () => {
+ const { exitCode, stdout } = spawnSync({
+ cmd: [bunExe(), path.join(import.meta.dir, "setTimeout-unref-fixture-5.js")],
+ env: bunEnv,
+ });
+ expect(exitCode).toBe(0);
+ expect(stdout.toString()).toBe("");
+});
+
+it("setTimeout -> unref doesn't keep event loop alive forever", () => {
+ const { exitCode, stdout } = spawnSync({
+ cmd: [bunExe(), path.join(import.meta.dir, "setTimeout-unref-fixture-3.js")],
+ env: bunEnv,
+ });
+ expect(exitCode).toBe(0);
+ expect(stdout.toString()).toBe("");
+});
+
it("setTimeout should refresh N times", done => {
let count = 0;
let timer = setTimeout(() => {
count++;
- timer.refresh();
+ expect(timer.refresh()).toBe(timer);
}, 50);
setTimeout(() => {