1// Flags: --report-on-fatalerror --report-on-signal --report-uncaught-exception --report-compact 2'use strict'; 3const common = require('../common'); 4const assert = require('assert'); 5 6// Verify that process.report.directory behaves properly. 7assert.strictEqual(process.report.directory, ''); 8process.report.directory = __dirname; 9assert.strictEqual(process.report.directory, __dirname); 10assert.throws(() => { 11 process.report.directory = {}; 12}, { code: 'ERR_INVALID_ARG_TYPE' }); 13assert.strictEqual(process.report.directory, __dirname); 14 15// Verify that process.report.filename behaves properly. 16assert.strictEqual(process.report.filename, ''); 17process.report.filename = 'test-report.json'; 18assert.strictEqual(process.report.filename, 'test-report.json'); 19assert.throws(() => { 20 process.report.filename = {}; 21}, { code: 'ERR_INVALID_ARG_TYPE' }); 22assert.strictEqual(process.report.filename, 'test-report.json'); 23 24// Verify that process.report.reportOnFatalError behaves properly. 25assert.strictEqual(process.report.reportOnFatalError, true); 26process.report.reportOnFatalError = false; 27assert.strictEqual(process.report.reportOnFatalError, false); 28process.report.reportOnFatalError = true; 29assert.strictEqual(process.report.reportOnFatalError, true); 30assert.throws(() => { 31 process.report.reportOnFatalError = {}; 32}, { code: 'ERR_INVALID_ARG_TYPE' }); 33assert.strictEqual(process.report.reportOnFatalError, true); 34 35 36// Verify that process.report.reportOnUncaughtException behaves properly. 37assert.strictEqual(process.report.reportOnUncaughtException, true); 38process.report.reportOnUncaughtException = false; 39assert.strictEqual(process.report.reportOnUncaughtException, false); 40process.report.reportOnUncaughtException = true; 41assert.strictEqual(process.report.reportOnUncaughtException, true); 42assert.throws(() => { 43 process.report.reportOnUncaughtException = {}; 44}, { code: 'ERR_INVALID_ARG_TYPE' }); 45assert.strictEqual(process.report.reportOnUncaughtException, true); 46 47// Verify that process.report.reportOnSignal behaves properly. 48assert.strictEqual(process.report.reportOnSignal, true); 49process.report.reportOnSignal = false; 50assert.strictEqual(process.report.reportOnSignal, false); 51process.report.reportOnSignal = true; 52assert.strictEqual(process.report.reportOnSignal, true); 53assert.throws(() => { 54 process.report.reportOnSignal = {}; 55}, { code: 'ERR_INVALID_ARG_TYPE' }); 56assert.strictEqual(process.report.reportOnSignal, true); 57 58// Verify that process.report.reportCompact behaves properly. 59assert.strictEqual(process.report.compact, true); 60process.report.compact = false; 61assert.strictEqual(process.report.compact, false); 62process.report.compact = true; 63assert.strictEqual(process.report.compact, true); 64assert.throws(() => { 65 process.report.compact = {}; 66}, { code: 'ERR_INVALID_ARG_TYPE' }); 67assert.strictEqual(process.report.compact, true); 68 69if (!common.isWindows) { 70 // Verify that process.report.signal behaves properly. 71 assert.strictEqual(process.report.signal, 'SIGUSR2'); 72 assert.throws(() => { 73 process.report.signal = {}; 74 }, { code: 'ERR_INVALID_ARG_TYPE' }); 75 assert.throws(() => { 76 process.report.signal = 'foo'; 77 }, { 78 code: 'ERR_UNKNOWN_SIGNAL', 79 message: 'Unknown signal: foo' 80 }); 81 assert.throws(() => { 82 process.report.signal = 'sigusr1'; 83 }, { 84 code: 'ERR_UNKNOWN_SIGNAL', 85 message: 'Unknown signal: sigusr1 (signals must use all capital letters)' 86 }); 87 assert.strictEqual(process.report.signal, 'SIGUSR2'); 88 process.report.signal = 'SIGUSR1'; 89 assert.strictEqual(process.report.signal, 'SIGUSR1'); 90 91 // Verify that the interaction between reportOnSignal and signal is correct. 92 process.report.signal = 'SIGUSR2'; 93 process.report.reportOnSignal = false; 94 assert.strictEqual(process.listenerCount('SIGUSR2'), 0); 95 process.report.reportOnSignal = true; 96 assert.strictEqual(process.listenerCount('SIGUSR2'), 1); 97 process.report.signal = 'SIGUSR1'; 98 assert.strictEqual(process.listenerCount('SIGUSR2'), 0); 99 assert.strictEqual(process.listenerCount('SIGUSR1'), 1); 100 process.report.reportOnSignal = false; 101 assert.strictEqual(process.listenerCount('SIGUSR1'), 0); 102} 103