child_process: restore exec{File}Sync error props
In PR [1], a bunch of properties were removed from the error thrown by execSync and execFileSync. It turns out that some of those were still supposed to be there, as the documentation states that the error contains the entire result from the spawnSync call. [1] https://github.com/nodejs/node/pull/13601 PR-URL: https://github.com/nodejs/node/pull/16060 Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
801e61ad5a
commit
556ebab30e
@ -574,8 +574,7 @@ function checkExecSyncError(ret, args, cmd) {
|
||||
err = new Error(msg);
|
||||
}
|
||||
if (err) {
|
||||
err.status = ret.status < 0 ? errname(ret.status) : ret.status;
|
||||
err.signal = ret.signal;
|
||||
Object.assign(err, ret);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
@ -23,7 +23,7 @@
|
||||
const common = require('../common');
|
||||
const assert = require('assert');
|
||||
|
||||
const { execFileSync, execSync } = require('child_process');
|
||||
const { execFileSync, execSync, spawnSync } = require('child_process');
|
||||
|
||||
const TIMER = 200;
|
||||
const SLEEP = 2000;
|
||||
@ -112,6 +112,16 @@ assert.strictEqual(ret, `${msg}\n`);
|
||||
// Verify the execFileSync() behavior when the child exits with a non-zero code.
|
||||
{
|
||||
const args = ['-e', 'process.exit(1)'];
|
||||
const spawnSyncResult = spawnSync(process.execPath, args);
|
||||
const spawnSyncKeys = Object.keys(spawnSyncResult).sort();
|
||||
assert.deepStrictEqual(spawnSyncKeys, [
|
||||
'output',
|
||||
'pid',
|
||||
'signal',
|
||||
'status',
|
||||
'stderr',
|
||||
'stdout'
|
||||
]);
|
||||
|
||||
assert.throws(() => {
|
||||
execFileSync(process.execPath, args);
|
||||
@ -121,6 +131,11 @@ assert.strictEqual(ret, `${msg}\n`);
|
||||
assert(err instanceof Error);
|
||||
assert.strictEqual(err.message, msg);
|
||||
assert.strictEqual(err.status, 1);
|
||||
assert.strictEqual(typeof err.pid, 'number');
|
||||
spawnSyncKeys.forEach((key) => {
|
||||
if (key === 'pid') return;
|
||||
assert.deepStrictEqual(err[key], spawnSyncResult[key]);
|
||||
});
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user