aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/child-process-stdio.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/bun.js/child-process-stdio.test.js')
-rw-r--r--test/bun.js/child-process-stdio.test.js71
1 files changed, 50 insertions, 21 deletions
diff --git a/test/bun.js/child-process-stdio.test.js b/test/bun.js/child-process-stdio.test.js
index 9969473be..a023a6e03 100644
--- a/test/bun.js/child-process-stdio.test.js
+++ b/test/bun.js/child-process-stdio.test.js
@@ -5,53 +5,82 @@ const CHILD_PROCESS_FILE = import.meta.dir + "/spawned-child.js";
const OUT_FILE = import.meta.dir + "/stdio-test-out.txt";
describe("process.stdout", () => {
- it("should allow us to write to it", () => {
- process.stdout.write("Bun is cool\n");
+ it("should allow us to write to it", (done) => {
+ const child = spawn("bun", [CHILD_PROCESS_FILE, "STDOUT"]);
+ child.stdout.setEncoding("utf8");
+ child.stdout.on("data", (data) => {
+ try {
+ expect(data).toBe("stdout_test");
+ done();
+ } catch (err) {
+ done(err);
+ }
+ });
});
});
describe("process.stdin", () => {
it("should allow us to read from stdin in readable mode", (done) => {
+ const input = "hello\n";
// Child should read from stdin and write it back
const child = spawn("bun", [CHILD_PROCESS_FILE, "STDIN", "READABLE"]);
+ let data = "";
child.stdout.setEncoding("utf8");
- child.stdout.on("data", (data) => {
- expect(data.trim()).toBe("data: hello");
- done();
+ child.stdout.on("data", (chunk) => {
+ data += chunk;
+ }).on("end", function() {
+ try {
+ expect(data).toBe(`data: ${input}`);
+ done();
+ } catch (err) {
+ done(err);
+ }
});
- child.stdin.write("hello\n");
+ child.stdin.write(input);
child.stdin.end();
});
it("should allow us to read from stdin via flowing mode", (done) => {
+ const input = "hello\n";
// Child should read from stdin and write it back
const child = spawn("bun", [CHILD_PROCESS_FILE, "STDIN", "FLOWING"]);
+ let data = "";
child.stdout.setEncoding("utf8");
- child.stdout.on("data", (data) => {
- expect(data.trim()).toBe("data: hello");
- done();
+ child.stdout.on("readable", () => {
+ let chunk;
+ while ((chunk = child.stdout.read()) !== null) {
+ data += chunk;
+ }
+ }).on("end", function() {
+ try {
+ expect(data).toBe(`data: ${input}`);
+ done();
+ } catch (err) {
+ done(err);
+ }
});
- child.stdin.write("hello\n");
+ child.stdin.write(input);
child.stdin.end();
});
it("should allow us to read > 65kb from stdin", (done) => {
- // Child should read from stdin and write it back
- const child = spawn("bun", [CHILD_PROCESS_FILE, "STDIN", "FLOWING"]);
- child.stdout.setEncoding("utf8");
-
const numReps = Math.ceil((66 * 1024) / 5);
const input = "hello".repeat(numReps);
-
+ // Child should read from stdin and write it back
+ const child = spawn("bun", [CHILD_PROCESS_FILE, "STDIN", "FLOWING"]);
let data = "";
- child.stdout.on("end", () => {
- expect(data).toBe(`data: ${input}`);
- done();
- });
+ child.stdout.setEncoding("utf8");
child.stdout.on("readable", () => {
let chunk;
while ((chunk = child.stdout.read()) !== null) {
- data += chunk.trim();
+ data += chunk;
+ }
+ }).on("end", function() {
+ try {
+ expect(data).toBe(`data: ${input}`);
+ done();
+ } catch (err) {
+ done(err);
}
});
child.stdin.write(input);
@@ -65,6 +94,6 @@ describe("process.stdin", () => {
}/readFileSync.txt`,
{ encoding: "utf8" },
);
- expect(result.trim()).toEqual("data: File read successfully");
+ expect(result).toEqual("data: File read successfully");
});
});