diff options
Diffstat (limited to 'test/bun.js/process-stdio.test.ts')
-rw-r--r-- | test/bun.js/process-stdio.test.ts | 71 |
1 files changed, 70 insertions, 1 deletions
diff --git a/test/bun.js/process-stdio.test.ts b/test/bun.js/process-stdio.test.ts index 45db37d05..df82f5791 100644 --- a/test/bun.js/process-stdio.test.ts +++ b/test/bun.js/process-stdio.test.ts @@ -1,14 +1,83 @@ -import { spawnSync } from "bun"; +import { spawn, spawnSync } from "bun"; import { describe, expect, it, test } from "bun:test"; import { bunExe } from "bunExe"; import { isatty } from "tty"; test("process.stdin", () => { expect(process.stdin).toBeDefined(); + expect(process.stdout.isTTY).toBe(isatty(0)); expect(process.stdin.on("close", function() {})).toBe(process.stdin); expect(process.stdin.once("end", function() {})).toBe(process.stdin); }); +test("process.stdin - read", async () => { + const { stdin, stdout } = spawn({ + cmd: [bunExe(), import.meta.dir + "/process-stdin-echo.js"], + stdout: "pipe", + stdin: "pipe", + stderr: null, + env: { + ...process.env, + BUN_DEBUG_QUIET_LOGS: "1", + }, + }); + expect(stdin).toBeDefined(); + expect(stdout).toBeDefined(); + var lines = [ + "Get Emoji", + "— All Emojis to ✂️ Copy and 📋 Paste", + "👌", + "", + ]; + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + setTimeout(() => { + if (line) { + stdin?.write(line + "\n"); + stdin?.flush(); + } else { + stdin?.end(); + } + }, i * 200); + } + var text = await new Response(stdout).text(); + expect(text).toBe(lines.join("\n") + "ENDED"); +}); + +test("process.stdin - resume", async () => { + const { stdin, stdout } = spawn({ + cmd: [bunExe(), import.meta.dir + "/process-stdin-echo.js", "resume"], + stdout: "pipe", + stdin: "pipe", + stderr: null, + env: { + ...process.env, + BUN_DEBUG_QUIET_LOGS: "1", + }, + }); + expect(stdin).toBeDefined(); + expect(stdout).toBeDefined(); + var lines = [ + "Get Emoji", + "— All Emojis to ✂️ Copy and 📋 Paste", + "👌", + "", + ]; + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + setTimeout(() => { + if (line) { + stdin?.write(line + "\n"); + stdin?.flush(); + } else { + stdin?.end(); + } + }, i * 200); + } + var text = await new Response(stdout).text(); + expect(text).toBe("RESUMED" + lines.join("\n") + "ENDED"); +}); + test("process.stdout", () => { expect(process.stdout).toBeDefined(); expect(process.stdout.isTTY).toBe(isatty(1)); |