1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-28 16:20:57 -05:00

fix(node/child_process): properly normalize stdio for 'spawnSync' (#21103)

Closes https://github.com/denoland/deno/issues/20782
This commit is contained in:
Bartek Iwańczuk 2023-11-10 06:59:39 +01:00 committed by GitHub
parent 9010b8df53
commit 612b7dfcc7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 3 deletions

View file

@ -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");
});

View file

@ -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,