diff options
author | 2023-01-24 03:30:27 -0800 | |
---|---|---|
committer | 2023-01-24 03:30:27 -0800 | |
commit | bb5119f7eb7bd6ebd20374d47aebebe22a6b2687 (patch) | |
tree | f716dc59d0b436b494397aba6a056af1729bc7db /test/bun.js | |
parent | 6f682c63695d450f304dd95012a6266e5edca9ff (diff) | |
download | bun-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.js | 5 | ||||
-rw-r--r-- | test/bun.js/hot-runner.js | 7 | ||||
-rw-r--r-- | test/bun.js/hot.test.ts | 44 |
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); +}); |