aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/console/console-iterator.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/bun.js/console/console-iterator.test.js')
-rw-r--r--test/bun.js/console/console-iterator.test.js65
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);
+ });
+ }
+});