Skip to content

Commit

Permalink
test: add coverage for spawnSync() killSignal
Browse files Browse the repository at this point in the history
This commit adds a test for the killSignal option to spawnSync(),
and the other sync child process functions by extension.

PR-URL: #8960
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
  • Loading branch information
cjihrig committed Oct 10, 2016
1 parent 528c844 commit 01db04b
Showing 1 changed file with 51 additions and 0 deletions.
51 changes: 51 additions & 0 deletions test/parallel/test-child-process-spawnsync-kill-signal.js
Original file line number Diff line number Diff line change
@@ -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);
}
}

0 comments on commit 01db04b

Please sign in to comment.