Files
bun.sh/test/bun.js/console-iterator.test.js
2022-12-05 11:35:34 -08:00

65 lines
1.8 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 { stdout, stdin } = spawn({
cmd: [bunExe(), import.meta.dir + "/" + "console-iterator-run.js"],
stdin: "pipe",
stdout: "pipe",
env: {
BUN_DEBUG_QUIET_LOGS: "1",
},
});
stdin.write(input.slice(0, 4));
await new Promise((resolve) => setTimeout(resolve, 1));
stdin.write(input.slice(4, 5));
await new Promise((resolve) => setTimeout(resolve, 1));
stdin.write(input.slice(5));
await new Promise((resolve) => setTimeout(resolve, 1));
stdin.end();
expect(await new Response(stdout).text()).toBe(
input.replaceAll("\n", ""),
);
});
}
});