From 38a87d5521f1370c686f63eda98968ddfeddb6ba Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Thu, 14 Feb 2019 18:34:53 -0500 Subject: [PATCH] test: increase coverage of node_report_module.cc PR-URL: https://github.com/nodejs/node/pull/26116 Reviewed-By: Rich Trott Reviewed-By: Colin Ihrig Reviewed-By: James M Snell Reviewed-By: Beth Griggs --- .../test-api-trigger-with-filename.js | 29 +++++++++++++ .../test-api-trigger-with-options.js | 30 +++++++++++++ .../test-diagnostic-report-verbose.js | 43 +++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 test/node-report/test-api-trigger-with-filename.js create mode 100644 test/node-report/test-api-trigger-with-options.js create mode 100644 test/node-report/test-diagnostic-report-verbose.js diff --git a/test/node-report/test-api-trigger-with-filename.js b/test/node-report/test-api-trigger-with-filename.js new file mode 100644 index 00000000000000..8603c0a7c31b68 --- /dev/null +++ b/test/node-report/test-api-trigger-with-filename.js @@ -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); + })); +} diff --git a/test/node-report/test-api-trigger-with-options.js b/test/node-report/test-api-trigger-with-options.js new file mode 100644 index 00000000000000..a236fa1305bf46 --- /dev/null +++ b/test/node-report/test-api-trigger-with-options.js @@ -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); + })); +} diff --git a/test/node-report/test-diagnostic-report-verbose.js b/test/node-report/test-diagnostic-report-verbose.js new file mode 100644 index 00000000000000..f59b07d62a9f07 --- /dev/null +++ b/test/node-report/test-diagnostic-report-verbose.js @@ -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}'`); + } + })); +}