aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/spawn-streaming-stdout.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'test/bun.js/spawn-streaming-stdout.test.ts')
-rw-r--r--test/bun.js/spawn-streaming-stdout.test.ts50
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);
});