bootstrap: add exception handling for profiler bootstrap
Add exception handling for the case when profile is not bootstrapped when coverage is enabled. Fixes: https://github.com/nodejs/node/issues/29542 PR-URL: https://github.com/nodejs/node/pull/29552 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
This commit is contained in:
parent
4ef3ccbbe0
commit
fdd5d4ad4a
@ -120,8 +120,16 @@ function setupCoverageHooks(dir) {
|
|||||||
const { resolve } = require('path');
|
const { resolve } = require('path');
|
||||||
const coverageDirectory = resolve(cwd, dir);
|
const coverageDirectory = resolve(cwd, dir);
|
||||||
const { sourceMapCacheToObject } = require('internal/source_map');
|
const { sourceMapCacheToObject } = require('internal/source_map');
|
||||||
internalBinding('profiler').setCoverageDirectory(coverageDirectory);
|
|
||||||
internalBinding('profiler').setSourceMapCacheGetter(sourceMapCacheToObject);
|
if (process.features.inspector) {
|
||||||
|
internalBinding('profiler').setCoverageDirectory(coverageDirectory);
|
||||||
|
internalBinding('profiler').setSourceMapCacheGetter(sourceMapCacheToObject);
|
||||||
|
} else {
|
||||||
|
process.emitWarning('The inspector is disabled, ' +
|
||||||
|
'coverage could not be collected',
|
||||||
|
'Warning');
|
||||||
|
return '';
|
||||||
|
}
|
||||||
return coverageDirectory;
|
return coverageDirectory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -651,6 +651,12 @@ function skipIfInspectorDisabled() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function skipIfInspectorEnabled() {
|
||||||
|
if (process.features.inspector) {
|
||||||
|
skip('V8 inspector is enabled');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function skipIfReportDisabled() {
|
function skipIfReportDisabled() {
|
||||||
if (!process.config.variables.node_report) {
|
if (!process.config.variables.node_report) {
|
||||||
skip('Diagnostic reporting is disabled');
|
skip('Diagnostic reporting is disabled');
|
||||||
@ -783,6 +789,7 @@ module.exports = {
|
|||||||
skipIf32Bits,
|
skipIf32Bits,
|
||||||
skipIfEslintMissing,
|
skipIfEslintMissing,
|
||||||
skipIfInspectorDisabled,
|
skipIfInspectorDisabled,
|
||||||
|
skipIfInspectorEnabled,
|
||||||
skipIfReportDisabled,
|
skipIfReportDisabled,
|
||||||
skipIfWorker,
|
skipIfWorker,
|
||||||
|
|
||||||
|
24
test/parallel/test-coverage-with-inspector-disabled.js
Normal file
24
test/parallel/test-coverage-with-inspector-disabled.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const common = require('../common');
|
||||||
|
common.skipIfInspectorEnabled();
|
||||||
|
|
||||||
|
const fixtures = require('../common/fixtures');
|
||||||
|
const assert = require('assert');
|
||||||
|
const { spawnSync } = require('child_process');
|
||||||
|
const env = { ...process.env, NODE_V8_COVERAGE: '/foo/bar' };
|
||||||
|
const childPath = fixtures.path('v8-coverage/subprocess');
|
||||||
|
const { status, stderr } = spawnSync(
|
||||||
|
process.execPath,
|
||||||
|
[childPath],
|
||||||
|
{ env }
|
||||||
|
);
|
||||||
|
|
||||||
|
const warningMessage = 'The inspector is disabled, ' +
|
||||||
|
'coverage could not be collected';
|
||||||
|
|
||||||
|
assert.strictEqual(status, 0);
|
||||||
|
assert.strictEqual(
|
||||||
|
stderr.toString().includes(`Warning: ${warningMessage}`),
|
||||||
|
true
|
||||||
|
);
|
Loading…
x
Reference in New Issue
Block a user