'use strict'; const common = require('../common'); const assert = require('assert'); const { spawn } = require('child_process'); if (process.argv[2] !== 'child') { // Expected error not emitted. { const child = spawn( process.execPath, [__filename, 'child', 0], { encoding: 'utf8' } ); child.on('exit', common.mustCall((status) => { assert.notStrictEqual(status, 0); })); } // Expected error emitted. { const child = spawn( process.execPath, [__filename, 'child', 1], { encoding: 'utf8' } ); child.on('exit', common.mustCall((status) => { assert.strictEqual(status, 0); })); } // Expected error emitted too many times. { const child = spawn( process.execPath, [__filename, 'child', 2], { encoding: 'utf8' } ); child.stderr.setEncoding('utf8'); let stderr = ''; child.stderr.on('data', (data) => { stderr += data; }); child.stderr.on('end', common.mustCall(() => { assert.match(stderr, /Unexpected extra warning received/); })); child.on('exit', common.mustCall((status) => { assert.notStrictEqual(status, 0); })); } } else { const iterations = +process.argv[3]; common.expectWarning('fhqwhgads', 'fhqwhgads', 'fhqwhgads'); for (let i = 0; i < iterations; i++) { process.emitWarning('fhqwhgads', 'fhqwhgads', 'fhqwhgads'); } }