summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-11-10 06:59:39 +0100
committerGitHub <noreply@github.com>2023-11-10 05:59:39 +0000
commit612b7dfcc76278f7823b2ea09540922955ac8bf5 (patch)
treef23fcc736f51baf7178ddc9476f379858c3c7f06
parent9010b8df53cd37f0410e08c43a194667974686a2 (diff)
fix(node/child_process): properly normalize stdio for 'spawnSync' (#21103)
Closes https://github.com/denoland/deno/issues/20782
-rw-r--r--cli/tests/unit_node/child_process_test.ts14
-rw-r--r--ext/node/polyfills/internal/child_process.ts11
2 files changed, 22 insertions, 3 deletions
diff --git a/cli/tests/unit_node/child_process_test.ts b/cli/tests/unit_node/child_process_test.ts
index 8d1c9a6b7..47e87096e 100644
--- a/cli/tests/unit_node/child_process_test.ts
+++ b/cli/tests/unit_node/child_process_test.ts
@@ -707,3 +707,17 @@ Deno.test(function spawnSyncUndefinedValueInEnvVar() {
assertEquals(ret.status, 0);
assertEquals(ret.stdout.toString("utf-8").trim(), "BAZ");
});
+
+Deno.test(function spawnSyncStdioUndefined() {
+ const ret = spawnSync(
+ `"${Deno.execPath()}" eval "console.log('hello');console.error('world')"`,
+ {
+ stdio: [undefined, undefined, undefined],
+ shell: true,
+ },
+ );
+
+ assertEquals(ret.status, 0);
+ assertEquals(ret.stdout.toString("utf-8").trim(), "hello");
+ assertEquals(ret.stderr.toString("utf-8").trim(), "world");
+});
diff --git a/ext/node/polyfills/internal/child_process.ts b/ext/node/polyfills/internal/child_process.ts
index 33b0b3166..7d707758e 100644
--- a/ext/node/polyfills/internal/child_process.ts
+++ b/ext/node/polyfills/internal/child_process.ts
@@ -835,7 +835,12 @@ export function spawnSync(
maxBuffer,
windowsVerbatimArguments = false,
} = options;
- const normalizedStdio = normalizeStdioOption(stdio);
+ const [
+ _stdin_ = "pipe", // TODO(bartlomieju): use this?
+ stdout_ = "pipe",
+ stderr_ = "pipe",
+ _channel, // TODO(kt3k): handle this correctly
+ ] = normalizeStdioOption(stdio);
[command, args] = buildCommand(command, args ?? [], shell);
const result: SpawnSyncResult = {};
@@ -844,8 +849,8 @@ export function spawnSync(
args,
cwd,
env: mapValues(env, (value) => value.toString()),
- stdout: toDenoStdio(normalizedStdio[1]),
- stderr: toDenoStdio(normalizedStdio[2]),
+ stdout: toDenoStdio(stdout_),
+ stderr: toDenoStdio(stderr_),
uid,
gid,
windowsRawArguments: windowsVerbatimArguments,