mirror of https://github.com/lukechilds/node.git
Browse Source
This commit adds a test for the killSignal option to spawnSync(), and the other sync child process functions by extension. PR-URL: https://github.com/nodejs/node/pull/8960 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>v7.x
cjihrig
8 years ago
committed by
James M Snell
1 changed files with 51 additions and 0 deletions
@ -0,0 +1,51 @@ |
|||||
|
'use strict'; |
||||
|
const common = require('../common'); |
||||
|
const assert = require('assert'); |
||||
|
const cp = require('child_process'); |
||||
|
|
||||
|
if (process.argv[2] === 'child') { |
||||
|
setInterval(() => {}, 1000); |
||||
|
} else { |
||||
|
const exitCode = common.isWindows ? 1 : 0; |
||||
|
const { SIGKILL } = process.binding('constants').os.signals; |
||||
|
|
||||
|
function spawn(killSignal) { |
||||
|
const child = cp.spawnSync(process.execPath, |
||||
|
[__filename, 'child'], |
||||
|
{killSignal, timeout: 100}); |
||||
|
|
||||
|
assert.strictEqual(child.status, exitCode); |
||||
|
assert.strictEqual(child.error.code, 'ETIMEDOUT'); |
||||
|
return child; |
||||
|
} |
||||
|
|
||||
|
// Verify that an error is thrown for unknown signals.
|
||||
|
assert.throws(() => { |
||||
|
spawn('SIG_NOT_A_REAL_SIGNAL'); |
||||
|
}, /Error: Unknown signal: SIG_NOT_A_REAL_SIGNAL/); |
||||
|
|
||||
|
// Verify that the default kill signal is SIGTERM.
|
||||
|
{ |
||||
|
const child = spawn(); |
||||
|
|
||||
|
assert.strictEqual(child.signal, 'SIGTERM'); |
||||
|
assert.strictEqual(child.options.killSignal, undefined); |
||||
|
} |
||||
|
|
||||
|
// Verify that a string signal name is handled properly.
|
||||
|
{ |
||||
|
const child = spawn('SIGKILL'); |
||||
|
|
||||
|
assert.strictEqual(child.signal, 'SIGKILL'); |
||||
|
assert.strictEqual(child.options.killSignal, SIGKILL); |
||||
|
} |
||||
|
|
||||
|
// Verify that a numeric signal is handled properly.
|
||||
|
{ |
||||
|
const child = spawn(SIGKILL); |
||||
|
|
||||
|
assert.strictEqual(typeof SIGKILL, 'number'); |
||||
|
assert.strictEqual(child.signal, 'SIGKILL'); |
||||
|
assert.strictEqual(child.options.killSignal, SIGKILL); |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue