diff options
Diffstat (limited to 'test/bun.js/console/console-iterator.test.js')
-rw-r--r-- | test/bun.js/console/console-iterator.test.js | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/test/bun.js/console/console-iterator.test.js b/test/bun.js/console/console-iterator.test.js new file mode 100644 index 000000000..533f084e1 --- /dev/null +++ b/test/bun.js/console/console-iterator.test.js @@ -0,0 +1,65 @@ +import { spawnSync, spawn } from "bun"; +import { describe, expect, it } from "bun:test"; +import { bunExe } from "bunExe"; + +describe("should work for static input", () => { + const inputs = [ + "hello world", + "hello world\n", + "hello world\n\n", + "hello world\n\n\n", + "Hello\nWorld\n", + "1", + "š Red Heart ⨠Sparkles š„ Fire\nš Red Heart ⨠Sparkles\nš Red Heart\nš\n\nnormal", + ]; + + for (let input of inputs) { + it(input.replaceAll("\n", "\\n"), () => { + const { stdout } = spawnSync({ + cmd: [bunExe(), import.meta.dir + "/" + "console-iterator-run.js"], + stdin: Buffer.from(input), + env: { + BUN_DEBUG_QUIET_LOGS: "1", + }, + }); + expect(stdout.toString()).toBe(input.replaceAll("\n", "")); + }); + } +}); + +describe("should work for streaming input", () => { + const inputs = [ + "hello world", + "hello world\n", + "hello world\n\n", + "hello world\n\n\n", + "Hello\nWorld\n", + "1", + "š Red Heart ⨠Sparkles š„ Fire\n š Red Heart ⨠Sparkles\n š Red Heart\n š \n\nnormal", + ]; + + for (let input of inputs) { + it(input.replaceAll("\n", "\\n"), async () => { + const proc = spawn({ + cmd: [bunExe(), import.meta.dir + "/" + "console-iterator-run.js"], + stdin: "pipe", + stdout: "pipe", + env: { + BUN_DEBUG_QUIET_LOGS: "1", + }, + }); + const { stdout, stdin } = proc; + stdin.write(input.slice(0, (input.length / 2) | 0)); + stdin.flush(); + await new Promise((resolve) => setTimeout(resolve, 1)); + stdin.write(input.slice((input.length / 2) | 0)); + stdin.flush(); + stdin.end(); + + expect(await new Response(stdout).text()).toBe( + input.replaceAll("\n", ""), + ); + proc.kill(0); + }); + } +}); |