// Flags: --experimental-report --report-on-signal 'use strict'; // Test producing a report via signal. const common = require('../common'); common.skipIfReportDisabled(); if (common.isWindows) return common.skip('Unsupported on Windows.'); if (!common.isMainThread) common.skip('Signal reporting is only supported in the main thread'); const assert = require('assert'); const helper = require('../common/report'); const tmpdir = require('../common/tmpdir'); common.expectWarning('ExperimentalWarning', 'report is an experimental feature. This feature could ' + 'change at any time'); tmpdir.refresh(); process.report.directory = tmpdir.path; assert.strictEqual(process.listenerCount('SIGUSR2'), 1); process.kill(process.pid, 'SIGUSR2'); // Asynchronously wait for the report. In development, a single setImmediate() // appears to be enough. Use an async loop to be a bit more robust in case // platform or machine differences throw off the timing. (function validate() { const reports = helper.findReports(process.pid, tmpdir.path); if (reports.length === 0) return setImmediate(validate); assert.strictEqual(reports.length, 1); helper.validate(reports[0]); })();