Skip to content

Commit 240ea8a

Browse files
committed
Workaround for #9041
1 parent 940448d commit 240ea8a

File tree

4 files changed

+60
-0
lines changed

4 files changed

+60
-0
lines changed

src/js/node/stream.js

+12
Original file line numberDiff line numberDiff line change
@@ -3388,9 +3388,21 @@ var require_readable = __commonJS({
33883388
};
33893389

33903390
Readable.fromWeb = function (readableStream, options) {
3391+
// We cache .stream() calls for file descriptors
3392+
// This won't create a new ReadableStream each time.
3393+
let bunStdinStream = Bun.stdin.stream();
3394+
if (readableStream === bunStdinStream) {
3395+
return bunStdinStream;
3396+
}
3397+
33913398
return webStreamsAdapters.newStreamReadableFromReadableStream(readableStream, options);
33923399
};
33933400
Readable.toWeb = function (streamReadable, options) {
3401+
// Workaround for https://github.com/oven-sh/bun/issues/9041
3402+
if (streamReadable === process.stdin) {
3403+
return Bun.stdin.stream();
3404+
}
3405+
33943406
return webStreamsAdapters.newReadableStreamFromStreamReadable(streamReadable, options);
33953407
};
33963408
Readable.wrap = function (src, options) {

test/regression/issue/09041.test.ts

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { test, expect } from "bun:test";
2+
import { bunEnv, bunExe, tempDirWithFiles } from "harness";
3+
import { join } from "path";
4+
import { $ } from "bun";
5+
import { cp, rm } from "fs/promises";
6+
test("09041", async () => {
7+
const out = tempDirWithFiles("09041", {
8+
"09041-fixture.mjs": await Bun.file(join(import.meta.dir, "09041", "09041-fixture.mjs")).text(),
9+
"09041-fixture.test.js": await Bun.file(join(import.meta.dir, "09041", "09041-fixture-test.txt")).text(),
10+
"package.json": `{}`,
11+
});
12+
13+
let { exited, stderr, stdout } = Bun.spawn({
14+
cmd: [bunExe(), "test"],
15+
cwd: out,
16+
env: bunEnv,
17+
stdio: ["ignore", "pipe", "inherit"],
18+
});
19+
20+
expect(await exited).toBe(0);
21+
const err = await new Response(stderr).text();
22+
expect(err).toContain("1 pass");
23+
expect(err).toContain("0 fail");
24+
25+
await rm(out, { force: true, recursive: true });
26+
}, 10000);

test/regression/issue/09041/09041-fixture-test.txt

+18
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/regression/issue/09041/09041-fixture.mjs

+4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)