From 44f774c256def3103d3e2c2cca7c7c0bc42e6edd Mon Sep 17 00:00:00 2001 From: Moshe Atlow Date: Thu, 5 Jan 2023 23:57:01 +0200 Subject: [PATCH] inspector: allow opening inspector when `NODE_V8_COVERAGE` is set --- lib/inspector.js | 2 +- test/fixtures/inspector-open.js | 14 +++++++++++++ test/parallel/test-inspector-open-coverage.js | 21 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/inspector-open.js create mode 100644 test/parallel/test-inspector-open-coverage.js diff --git a/lib/inspector.js b/lib/inspector.js index 8c2f649411284b..84dcd3f5bc965c 100644 --- a/lib/inspector.js +++ b/lib/inspector.js @@ -168,7 +168,7 @@ class Session extends EventEmitter { * @returns {void} */ function inspectorOpen(port, host, wait) { - if (isEnabled()) { + if (isEnabled() && url()) { throw new ERR_INSPECTOR_ALREADY_ACTIVATED(); } // inspectorOpen() currently does not typecheck its arguments and adding diff --git a/test/fixtures/inspector-open.js b/test/fixtures/inspector-open.js new file mode 100644 index 00000000000000..715687fe0e1e28 --- /dev/null +++ b/test/fixtures/inspector-open.js @@ -0,0 +1,14 @@ +const assert = require('assert'); +const inspector = require('inspector'); + + +assert.strictEqual(inspector.url(), undefined); +inspector.open(0, undefined, false); +assert(inspector.url().startsWith('ws://')); +assert.throws(() => { + inspector.open(0, undefined, false); +}, { + code: 'ERR_INSPECTOR_ALREADY_ACTIVATED' +}); +inspector.close(); +assert.strictEqual(inspector.url(), undefined); diff --git a/test/parallel/test-inspector-open-coverage.js b/test/parallel/test-inspector-open-coverage.js new file mode 100644 index 00000000000000..259049c36822ab --- /dev/null +++ b/test/parallel/test-inspector-open-coverage.js @@ -0,0 +1,21 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const { spawnSync } = require('child_process'); +const fixtures = require('../common/fixtures'); +const tmpdir = require('../common/tmpdir'); + +common.skipIfInspectorDisabled(); +common.skipIfWorker(); + +tmpdir.refresh(); + + +let output = spawnSync(process.execPath, [fixtures.path('inspector-open.js')]); +assert.strictEqual(output.status, 0); + +output = spawnSync(process.execPath, [fixtures.path('inspector-open.js')], { + env: { ...process.env, NODE_V8_COVERAGE: tmpdir.path }, +}); +assert.strictEqual(output.status, 0);