mirror of
https://github.com/nodejs/node.git
synced 2024-11-29 15:06:33 +01:00
test: cover thrown errors from exec() kill
This commit adds code coverage for the scenario where exec() kills a child process, but the call to ChildProcess#kill() throws an exception. PR-URL: https://github.com/nodejs/node/pull/11038 Reviewed-By: Sam Roberts <vieuxtech@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
This commit is contained in:
parent
dc9717c805
commit
9ac363b5d6
29
test/parallel/test-child-process-exec-kill-throws.js
Normal file
29
test/parallel/test-child-process-exec-kill-throws.js
Normal file
@ -0,0 +1,29 @@
|
||||
'use strict';
|
||||
// Flags: --expose_internals
|
||||
const common = require('../common');
|
||||
const assert = require('assert');
|
||||
const cp = require('child_process');
|
||||
const internalCp = require('internal/child_process');
|
||||
|
||||
if (process.argv[2] === 'child') {
|
||||
// Keep the process alive and printing to stdout.
|
||||
setInterval(() => { console.log('foo'); }, 1);
|
||||
} else {
|
||||
// Monkey patch ChildProcess#kill() to kill the process and then throw.
|
||||
const kill = internalCp.ChildProcess.prototype.kill;
|
||||
|
||||
internalCp.ChildProcess.prototype.kill = function() {
|
||||
kill.apply(this, arguments);
|
||||
throw new Error('mock error');
|
||||
};
|
||||
|
||||
const cmd = `${process.execPath} ${__filename} child`;
|
||||
const options = { maxBuffer: 0 };
|
||||
const child = cp.exec(cmd, options, common.mustCall((err, stdout, stderr) => {
|
||||
// Verify that if ChildProcess#kill() throws, the error is reported.
|
||||
assert(/^Error: mock error$/.test(err));
|
||||
assert.strictEqual(stdout, '');
|
||||
assert.strictEqual(stderr, '');
|
||||
assert.strictEqual(child.killed, true);
|
||||
}));
|
||||
}
|
Loading…
Reference in New Issue
Block a user