diff options
Diffstat (limited to 'test/bun.js/spawn-streaming-stdout.test.ts')
-rw-r--r-- | test/bun.js/spawn-streaming-stdout.test.ts | 50 |
1 files changed, 33 insertions, 17 deletions
diff --git a/test/bun.js/spawn-streaming-stdout.test.ts b/test/bun.js/spawn-streaming-stdout.test.ts index 88c028db3..1f736533a 100644 --- a/test/bun.js/spawn-streaming-stdout.test.ts +++ b/test/bun.js/spawn-streaming-stdout.test.ts @@ -1,25 +1,41 @@ import { it, test, expect } from "bun:test"; import { spawn } from "bun"; import { bunExe } from "./bunExe"; +import { gcTick } from "gc"; test("spawn can read from stdout multiple chunks", async () => { - const proc = spawn({ - cmd: [bunExe(), import.meta.dir + "/spawn-streaming-stdout-repro.js"], - stdout: "pipe", - env: { - BUN_DEBUG_QUIET_LOGS: 1, - }, - }); + gcTick(true); + var exited; + await (async function () { + const proc = spawn({ + cmd: [bunExe(), import.meta.dir + "/spawn-streaming-stdout-repro.js"], + stdout: "pipe", + env: { + BUN_DEBUG_QUIET_LOGS: 1, + }, + }); + exited = proc.exited; + gcTick(true); + var counter = 0; + try { + for await (var chunk of proc.stdout) { + gcTick(true); + expect(new TextDecoder().decode(chunk)).toBe("Wrote to stdout\n"); + counter++; - var counter = 0; - for await (var chunk of proc.stdout) { - expect(new TextDecoder().decode(chunk)).toBe("Wrote to stdout\n"); - counter++; + if (counter > 3) break; + } + } catch (e) { + console.log(e.stack); + throw e; + } + gcTick(true); - if (counter > 3) break; - } - - expect(counter).toBe(4); - proc.kill(); - await proc.exited; + expect(counter).toBe(4); + gcTick(); + proc.kill(); + gcTick(); + })(); + await exited; + gcTick(true); }); |