nodejs/test/parallel/test-vm-sigint.js
Rich Trott fd02c93d29 test: ensure callback runs in test-vm-sigint
PR-URL: https://github.com/nodejs/node/pull/7768
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2016-07-19 21:02:54 -07:00

40 lines
969 B
JavaScript

'use strict';
const common = require('../common');
const assert = require('assert');
const vm = require('vm');
const spawn = require('child_process').spawn;
if (process.platform === 'win32') {
// No way to send CTRL_C_EVENT to processes from JS right now.
common.skip('platform not supported');
return;
}
if (process.argv[2] === 'child') {
const parent = +process.env.REPL_TEST_PPID;
assert.ok(parent);
assert.throws(() => {
vm.runInThisContext(`process.kill(${parent}, "SIGUSR2"); while(true) {}`, {
breakOnSigint: true
});
}, /Script execution interrupted/);
return;
}
process.env.REPL_TEST_PPID = process.pid;
const child = spawn(process.execPath, [ __filename, 'child' ], {
stdio: [null, 'pipe', 'inherit']
});
process.on('SIGUSR2', common.mustCall(() => {
process.kill(child.pid, 'SIGINT');
}));
child.on('close', common.mustCall((code, signal) => {
assert.strictEqual(signal, null);
assert.strictEqual(code, 0);
}));