aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-01-24 03:30:27 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-01-24 03:30:27 -0800
commitbb5119f7eb7bd6ebd20374d47aebebe22a6b2687 (patch)
treef716dc59d0b436b494397aba6a056af1729bc7db /test/bun.js
parent6f682c63695d450f304dd95012a6266e5edca9ff (diff)
downloadbun-bb5119f7eb7bd6ebd20374d47aebebe22a6b2687.tar.gz
bun-bb5119f7eb7bd6ebd20374d47aebebe22a6b2687.tar.zst
bun-bb5119f7eb7bd6ebd20374d47aebebe22a6b2687.zip
Add simple test for `bun --hot`
Diffstat (limited to '')
-rw-r--r--test/bun.js/hot-runner-imported.js5
-rw-r--r--test/bun.js/hot-runner.js7
-rw-r--r--test/bun.js/hot.test.ts44
3 files changed, 56 insertions, 0 deletions
diff --git a/test/bun.js/hot-runner-imported.js b/test/bun.js/hot-runner-imported.js
new file mode 100644
index 000000000..bfa94ec4f
--- /dev/null
+++ b/test/bun.js/hot-runner-imported.js
@@ -0,0 +1,5 @@
+globalThis.importedCounter ??= 0;
+
+console.log(
+ `[${Date.now()}] [#!imported] Reloaded: ${++globalThis.importedCounter}`,
+);
diff --git a/test/bun.js/hot-runner.js b/test/bun.js/hot-runner.js
new file mode 100644
index 000000000..fc34f6c64
--- /dev/null
+++ b/test/bun.js/hot-runner.js
@@ -0,0 +1,7 @@
+import "./hot-runner-imported";
+
+globalThis.counter ??= 0;
+
+console.log(`[${Date.now()}] [#!root] Reloaded: ${++globalThis.counter}`);
+
+setTimeout(() => {}, 9999999999);
diff --git a/test/bun.js/hot.test.ts b/test/bun.js/hot.test.ts
new file mode 100644
index 000000000..a862d13ce
--- /dev/null
+++ b/test/bun.js/hot.test.ts
@@ -0,0 +1,44 @@
+import { spawn } from "bun";
+import { expect, it } from "bun:test";
+import { bunEnv } from "bunEnv";
+import { bunExe } from "bunExe";
+import { readFileSync, unlinkSync, writeFileSync } from "fs";
+
+it("should hot reload when file is overwritten", async () => {
+ const root = import.meta.dir + "/hot-runner.js";
+ const runner = spawn({
+ cmd: [bunExe(), "--hot", "run", root],
+ env: bunEnv,
+ stdout: "pipe",
+ stderr: "inherit",
+ stdin: "ignore",
+ });
+
+ var reloadCounter = 0;
+
+ async function onReload() {
+ writeFileSync(root, readFileSync(root, "utf-8"));
+ }
+
+ await (async function () {
+ for await (const line of runner.stdout!) {
+ var str = new TextDecoder().decode(line);
+
+ if (str.includes("[#!root]")) {
+ reloadCounter++;
+
+ if (reloadCounter === 3) {
+ runner.unref();
+ runner.kill();
+ return;
+ }
+
+ expect(str).toContain(`[#!root] Reloaded: ${reloadCounter}`);
+
+ await onReload();
+ }
+ }
+ })();
+
+ expect(reloadCounter).toBe(3);
+});