| 'use strict'; |
| const { platformTimeout, mustCall } = require('../common'); |
| const childProcess = require('child_process'); |
| const assert = require('assert'); |
| |
| if (process.env.CHILD === 'true') { |
| main(); |
| } else { |
| // Use inherited stdio child process to prevent test tools from determining |
| // the case as crashed from SIGINT |
| const cp = childProcess.spawn( |
| process.execPath, |
| ['--trace-sigint', __filename], |
| { |
| env: { ...process.env, CHILD: 'true' }, |
| stdio: ['inherit', 'inherit', 'inherit', 'ipc'] |
| }); |
| cp.on('message', mustCall(() => { |
| setTimeout(() => cp.kill('SIGINT'), platformTimeout(100)); |
| })); |
| cp.on('exit', mustCall((code, signal) => { |
| assert.strictEqual(signal, 'SIGINT'); |
| assert.strictEqual(code, null); |
| })); |
| } |
| |
| function main() { |
| // Deactivate colors even if the tty does support colors. |
| process.env.NODE_DISABLE_COLORS = '1'; |
| process.channel.ref(); // Keep event loop alive until the signal is received. |
| process.send('ready'); |
| } |