From 092b86321c3210b5435deef1d283648eb8ea5a90 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Wed, 28 Dec 2022 11:21:21 +0200 Subject: log object string correctly (#1674) use `Symbol.toStringTag` of the object or that of its `.prototype` fixes #1584 --- test/bun.js/console/console-iterator.test.js | 65 ++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 test/bun.js/console/console-iterator.test.js (limited to 'test/bun.js/console/console-iterator.test.js') 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); + }); + } +}); -- cgit v1.2.3