• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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