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