mirror of
https://github.com/denoland/deno.git
synced 2024-12-27 17:49:08 -05:00
fix(node): don't close stdio streams (#19256)
Closes https://github.com/denoland/deno/issues/19255 --------- Co-authored-by: Yoshiya Hinosawa <stibium121@gmail.com>
This commit is contained in:
parent
fb0068bc43
commit
544f48c23c
2 changed files with 19 additions and 0 deletions
|
@ -2,6 +2,8 @@
|
|||
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
|
||||
|
||||
import process, { argv, env } from "node:process";
|
||||
import { Readable } from "node:stream";
|
||||
import { once } from "node:events";
|
||||
import {
|
||||
assert,
|
||||
assertEquals,
|
||||
|
@ -746,3 +748,19 @@ Deno.test({
|
|||
assertEquals(stripColor(decoder.decode(stdout).trim()), "really exited");
|
||||
},
|
||||
});
|
||||
|
||||
Deno.test({
|
||||
name: "process.stdout isn't closed when source stream ended",
|
||||
async fn() {
|
||||
const source = Readable.from(["foo", "bar"]);
|
||||
|
||||
source.pipe(process.stdout);
|
||||
await once(source, "end");
|
||||
|
||||
// Wait a bit to ensure that streaming is completely finished.
|
||||
await delay(10);
|
||||
|
||||
// This checks if the rid 1 is still valid.
|
||||
assert(typeof process.stdout.isTTY === "boolean");
|
||||
},
|
||||
});
|
||||
|
|
|
@ -16,6 +16,7 @@ import * as io from "ext:deno_io/12_io.js";
|
|||
// https://github.com/nodejs/node/blob/00738314828074243c9a52a228ab4c68b04259ef/lib/internal/bootstrap/switches/is_main_thread.js#L41
|
||||
export function createWritableStdioStream(writer, name) {
|
||||
const stream = new Writable({
|
||||
emitClose: false,
|
||||
write(buf, enc, cb) {
|
||||
if (!writer) {
|
||||
this.destroy(
|
||||
|
|
Loading…
Reference in a new issue