test: increase coverage of node_report_module.cc

PR-URL: https://github.com/nodejs/node/pull/26116
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Beth Griggs <Bethany.Griggs@uk.ibm.com>
This commit is contained in:
Richard Lau 2019-02-14 18:34:53 -05:00
parent fd0a861cdb
commit 146868c75e
3 changed files with 102 additions and 0 deletions

View File

@ -0,0 +1,29 @@
'use strict';
// Tests when a report is triggered with a given filename.
const common = require('../common');
common.skipIfReportDisabled();
const filename = 'myreport.json';
if (process.argv[2] === 'child') {
process.report.triggerReport(filename);
} else {
const helper = require('../common/report.js');
const spawn = require('child_process').spawn;
const assert = require('assert');
const { join } = require('path');
const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
const child = spawn(process.execPath,
['--experimental-report', __filename, 'child'],
{ cwd: tmpdir.path });
child.on('exit', common.mustCall((code) => {
const process_msg = 'Process exited unexpectedly';
assert.strictEqual(code, 0, process_msg + ':' + code);
const reports = helper.findReports(child.pid, tmpdir.path);
assert.strictEqual(reports.length, 0,
`Found unexpected report ${reports[0]}`);
const report = join(tmpdir.path, filename);
helper.validate(report);
}));
}

View File

@ -0,0 +1,30 @@
'use strict';
// Tests when a report is triggered with options set.
const common = require('../common');
common.skipIfReportDisabled();
const filename = 'myreport.json';
if (process.argv[2] === 'child') {
process.report.setOptions({ filename: filename });
process.report.triggerReport();
} else {
const helper = require('../common/report.js');
const spawn = require('child_process').spawn;
const assert = require('assert');
const { join } = require('path');
const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
const child = spawn(process.execPath,
['--experimental-report', __filename, 'child'],
{ cwd: tmpdir.path });
child.on('exit', common.mustCall((code) => {
const process_msg = 'Process exited unexpectedly';
assert.strictEqual(code, 0, process_msg + ':' + code);
const reports = helper.findReports(child.pid, tmpdir.path);
assert.strictEqual(reports.length, 0,
`Found unexpected report ${reports[0]}`);
const report = join(tmpdir.path, filename);
helper.validate(report);
}));
}

View File

@ -0,0 +1,43 @@
'use strict';
// Tests --diagnostic-report-verbose option.
const common = require('../common');
common.skipIfReportDisabled();
if (process.argv[2] === 'child') {
// no-op
} else {
const helper = require('../common/report.js');
const spawn = require('child_process').spawn;
const assert = require('assert');
const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
const expected = [ 'report: initialization complete, event flags:',
'report_uncaught_exception: 0',
'report_on_signal: 0',
'report_on_fatalerror: 0',
'report_signal:',
'report_filename:',
'report_directory:',
'report_verbose: 1' ];
const child = spawn(process.execPath,
['--experimental-report',
'--diagnostic-report-verbose',
__filename,
'child',
],
{ cwd: tmpdir.path });
let stderr;
child.stderr.on('data', (data) => stderr += data);
child.on('exit', common.mustCall((code) => {
const process_msg = 'Process exited unexpectedly';
assert.strictEqual(code, 0, process_msg + ':' + code);
const reports = helper.findReports(child.pid, tmpdir.path);
assert.strictEqual(reports.length, 0,
`Found unexpected report ${reports[0]}`);
for (const line of expected) {
assert.ok(stderr.includes(line), `'${line}' not found in '${stderr}'`);
}
}));
}