mirror of
https://github.com/denoland/deno.git
synced 2024-11-24 15:19:26 -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:
parent
9010b8df53
commit
612b7dfcc7
2 changed files with 22 additions and 3 deletions
|
@ -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");
|
||||
});
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue