Files
bun.sh/test/regression/issue/18239/18239.test.ts
2025-06-03 13:23:12 -07:00

38 lines
1.2 KiB
TypeScript

import { spawnSync } from "bun";
import { expect, test } from "bun:test";
import { bunEnv, bunExe, isWindows } from "harness";
import { join } from "path";
// https://github.com/oven-sh/bun/issues/18239
test.skipIf(isWindows)("TTY stdin buffering should work correctly", async () => {
const dataGeneratorPath = join(import.meta.dir, "data-generator.sh");
const fixturePath = join(import.meta.dir, "18239.fixture.ts");
// Run the data generator piped into our TTY test fixture
const result = spawnSync({
cmd: ["bash", "-c", `"${dataGeneratorPath}" | "${bunExe()}" "${fixturePath}"`],
env: {
...bunEnv,
BUN_DEBUG_QUIET_LOGS: "1",
},
stderr: "pipe",
stdout: "pipe",
});
const stdout = result.stdout.toString();
const stderr = result.stderr.toString();
// Should have received exactly 3 chunks
expect(stdout).toContain("Received 3 chunks, exiting...");
// Should not have the error message
expect(stderr).not.toContain("Exited without receiving 3 chunks");
// Should contain chunk messages with timestamps
expect(stdout).toMatch(/\[.*\] Chunk #1:/);
expect(stdout).toMatch(/\[.*\] Chunk #2:/);
expect(stdout).toMatch(/\[.*\] Chunk #3:/);
expect(result.exitCode).toBe(0);
});