Skip to content

deps: Update node-inspect to v1.11.6 #28039

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions deps/node-inspect/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
### 1.11.6

* fix: replace the deprecated "repl.cli" with "repl" - **[@oyyd](https://github.com/oyyd)** [#66](https://github.com/nodejs/node-inspect/pull/66)
- [`5c1d771`](https://github.com/nodejs/node-inspect/commit/5c1d7716523b73e26f98f4f594ee34b7daa920a0) **fix:** replace the deprecated "repl.cli" with "repl" - see: [26260](Refs: https://github.com/nodejs/node/pull/26260)
* Address regressions due to changes in node - **[@jkrems](https://github.com/jkrems)** [#67](https://github.com/nodejs/node-inspect/pull/67)
- [`5b3511e`](https://github.com/nodejs/node-inspect/commit/5b3511ef21d0eba8304d8b2fed33f33aae22f308) **fix:** Address regressions due to changes in node


### 1.11.5

* Fix eslint issues - **[@jkrems](https://github.com/jkrems)** [#63](https://github.com/nodejs/node-inspect/pull/63)
Expand Down
4 changes: 2 additions & 2 deletions deps/node-inspect/lib/_inspect.js
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ class NodeInspector {

suspendReplWhile(fn) {
if (this.repl) {
this.repl.rli.pause();
this.repl.pause();
}
this.stdin.pause();
this.paused = true;
Expand All @@ -207,7 +207,7 @@ class NodeInspector {
}).then(() => {
this.paused = false;
if (this.repl) {
this.repl.rli.resume();
this.repl.resume();
this.repl.displayPrompt();
}
this.stdin.resume();
Expand Down
30 changes: 17 additions & 13 deletions deps/node-inspect/lib/internal/inspect_repl.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ const Path = require('path');
const Repl = require('repl');
const util = require('util');
const vm = require('vm');
const fileURLToPath = require('url').fileURLToPath;

const debuglog = util.debuglog('inspect');

Expand Down Expand Up @@ -89,9 +90,12 @@ function isNativeUrl(url) {
return url.replace('.js', '') in NATIVES || url === 'bootstrap_node.js';
}

function getRelativePath(filename) {
function getRelativePath(filenameOrURL) {
const dir = Path.join(Path.resolve(), 'x').slice(0, -1);

const filename = filenameOrURL.startsWith('file://') ?
fileURLToPath(filenameOrURL) : filenameOrURL;

// Change path to relative, if possible
if (filename.indexOf(dir) === 0) {
return filename.slice(dir.length);
Expand Down Expand Up @@ -958,38 +962,38 @@ function createRepl(inspector) {

get repl() {
// Don't display any default messages
const listeners = repl.rli.listeners('SIGINT').slice(0);
repl.rli.removeAllListeners('SIGINT');
const listeners = repl.listeners('SIGINT').slice(0);
repl.removeAllListeners('SIGINT');

const oldContext = repl.context;

exitDebugRepl = () => {
// Restore all listeners
process.nextTick(() => {
listeners.forEach((listener) => {
repl.rli.on('SIGINT', listener);
repl.on('SIGINT', listener);
});
});

// Exit debug repl
repl.eval = controlEval;

// Swap history
history.debug = repl.rli.history;
repl.rli.history = history.control;
history.debug = repl.history;
repl.history = history.control;

repl.context = oldContext;
repl.rli.setPrompt('debug> ');
repl.setPrompt('debug> ');
repl.displayPrompt();

repl.rli.removeListener('SIGINT', exitDebugRepl);
repl.removeListener('SIGINT', exitDebugRepl);
repl.removeListener('exit', exitDebugRepl);

exitDebugRepl = null;
};

// Exit debug repl on SIGINT
repl.rli.on('SIGINT', exitDebugRepl);
repl.on('SIGINT', exitDebugRepl);

// Exit debug repl on repl exit
repl.on('exit', exitDebugRepl);
Expand All @@ -999,10 +1003,10 @@ function createRepl(inspector) {
repl.context = {};

// Swap history
history.control = repl.rli.history;
repl.rli.history = history.debug;
history.control = repl.history;
repl.history = history.debug;

repl.rli.setPrompt('> ');
repl.setPrompt('> ');

print('Press Ctrl + C to leave debug repl');
repl.displayPrompt();
Expand Down Expand Up @@ -1077,7 +1081,7 @@ function createRepl(inspector) {

repl.defineCommand('interrupt', () => {
// We want this for testing purposes where sending CTRL-C can be tricky.
repl.rli.emit('SIGINT');
repl.emit('SIGINT');
});

// Init once for the initial connection
Expand Down
2 changes: 1 addition & 1 deletion deps/node-inspect/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "node-inspect",
"version": "1.11.5",
"version": "1.11.6",
"description": "Node Inspect",
"license": "MIT",
"main": "lib/_inspect.js",
Expand Down
6 changes: 3 additions & 3 deletions deps/node-inspect/test/cli/break.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ test('stepping through breakpoints', (t) => {
.then(() => cli.waitForPrompt())
.then(() => {
t.match(
cli.output,
`break in ${script}:1`,
cli.breakInfo,
{ filename: script, line: 1 },
'pauses in the first line of the script');
t.match(
cli.output,
/> 1 \(function \([^)]+\) \{ const x = 10;/,
/> 1 (?:\(function \([^)]+\) \{ )?const x = 10;/,
'shows the source and marks the current line');
})
.then(() => cli.stepCommand('n'))
Expand Down
8 changes: 4 additions & 4 deletions deps/node-inspect/test/cli/exceptions.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ test('break on (uncaught) exceptions', (t) => {
return cli.waitForInitialBreak()
.then(() => cli.waitForPrompt())
.then(() => {
t.match(cli.output, `break in ${script}:1`);
t.match(cli.breakInfo, { filename: script, line: 1 });
})
// making sure it will die by default:
.then(() => cli.command('c'))
Expand All @@ -28,7 +28,7 @@ test('break on (uncaught) exceptions', (t) => {
.then(() => cli.stepCommand('r'))
.then(() => cli.waitForInitialBreak())
.then(() => {
t.match(cli.output, `break in ${script}:1`);
t.match(cli.breakInfo, { filename: script, line: 1 });
})
.then(() => cli.command('breakOnException'))
.then(() => cli.stepCommand('c'))
Expand All @@ -45,7 +45,7 @@ test('break on (uncaught) exceptions', (t) => {
.then(() => cli.stepCommand('r')) // also, the setting survives the restart
.then(() => cli.waitForInitialBreak())
.then(() => {
t.match(cli.output, `break in ${script}:1`);
t.match(cli.breakInfo, { filename: script, line: 1 });
})
.then(() => cli.stepCommand('c'))
.then(() => {
Expand All @@ -57,7 +57,7 @@ test('break on (uncaught) exceptions', (t) => {
.then(() => cli.stepCommand('r'))
.then(() => cli.waitForInitialBreak())
.then(() => {
t.match(cli.output, `break in ${script}:1`);
t.match(cli.breakInfo, { filename: script, line: 1 });
})
.then(() => cli.command('c'))
// TODO: Remove FATAL ERROR once node doesn't show a FATAL ERROR anymore
Expand Down
16 changes: 8 additions & 8 deletions deps/node-inspect/test/cli/launch.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -137,23 +137,23 @@ test('run after quit / restart', (t) => {
.then(() => cli.waitForPrompt())
.then(() => {
t.match(
cli.output,
`break in ${script}:1`,
cli.breakInfo,
{ filename: script, line: 1 },
'is back at the beginning');
})
.then(() => cli.stepCommand('n'))
.then(() => {
t.match(
cli.output,
`break in ${script}:2`,
cli.breakInfo,
{ filename: script, line: 2 },
'steps to the 2nd line');
})
.then(() => cli.stepCommand('restart'))
.then(() => cli.waitForInitialBreak())
.then(() => {
t.match(
cli.output,
`break in ${script}:1`,
cli.breakInfo,
{ filename: script, line: 1 },
'is back at the beginning');
})
.then(() => cli.command('kill'))
Expand All @@ -167,8 +167,8 @@ test('run after quit / restart', (t) => {
.then(() => cli.waitForPrompt())
.then(() => {
t.match(
cli.output,
`break in ${script}:1`,
cli.breakInfo,
{ filename: script, line: 1 },
'is back at the beginning');
})
.then(() => cli.quit())
Expand Down
2 changes: 1 addition & 1 deletion deps/node-inspect/test/cli/low-level.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ test('Debugger agent direct access', (t) => {
.then(() => {
t.match(
cli.output,
/scriptSource: '\(function \(/);
/scriptSource:[ \n]*'(?:\(function \(|let x = 1)/);
t.match(
cli.output,
/let x = 1;/);
Expand Down
8 changes: 4 additions & 4 deletions deps/node-inspect/test/cli/preserve-breaks.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,20 +30,20 @@ test('run after quit / restart', (t) => {
.then(() => cli.stepCommand('c')) // hit line 2
.then(() => cli.stepCommand('c')) // hit line 3
.then(() => {
t.match(cli.output, `break in ${script}:3`);
t.match(cli.breakInfo, { filename: script, line: 3 });
})
.then(() => cli.command('restart'))
.then(() => cli.waitForInitialBreak())
.then(() => {
t.match(cli.output, `break in ${script}:1`);
t.match(cli.breakInfo, { filename: script, line: 1 });
})
.then(() => cli.stepCommand('c'))
.then(() => {
t.match(cli.output, `break in ${script}:2`);
t.match(cli.breakInfo, { filename: script, line: 2 });
})
.then(() => cli.stepCommand('c'))
.then(() => {
t.match(cli.output, `break in ${script}:3`);
t.match(cli.breakInfo, { filename: script, line: 3 });
})
.then(() => cli.command('breakpoints'))
.then(() => {
Expand Down
4 changes: 2 additions & 2 deletions deps/node-inspect/test/cli/scripts.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ test('list scripts', (t) => {
'lists the user script');
t.notMatch(
cli.output,
/\d+: module\.js <native>/,
/\d+: buffer\.js <native>/,
'omits node-internal scripts');
})
.then(() => cli.command('scripts(true)'))
Expand All @@ -35,7 +35,7 @@ test('list scripts', (t) => {
'lists the user script');
t.match(
cli.output,
/\d+: module\.js <native>/,
/\d+: buffer\.js <native>/,
'includes node-internal scripts');
})
.then(() => cli.quit())
Expand Down
31 changes: 26 additions & 5 deletions deps/node-inspect/test/cli/start-cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ const BREAK_MESSAGE = new RegExp('(?:' + [
'exception', 'other', 'promiseRejection',
].join('|') + ') in', 'i');

function isPreBreak(output) {
return /Break on start/.test(output) && /1 \(function \(exports/.test(output);
}

function startCLI(args, flags = []) {
const child = spawn(process.execPath, [...flags, CLI, ...args]);
let isFirstStdoutChunk = true;
Expand Down Expand Up @@ -101,13 +105,25 @@ function startCLI(args, flags = []) {
waitForInitialBreak(timeout = 2000) {
return this.waitFor(/break (?:on start )?in/i, timeout)
.then(() => {
if (/Break on start/.test(this.output)) {
if (isPreBreak(this.output)) {
return this.command('next', false)
.then(() => this.waitFor(/break in/, timeout));
}
});
},

get breakInfo() {
const output = this.output;
const breakMatch =
output.match(/break (?:on start )?in ([^\n]+):(\d+)\n/i);

if (breakMatch === null) {
throw new Error(
`Could not find breakpoint info in ${JSON.stringify(output)}`);
}
return { filename: breakMatch[1], line: +breakMatch[2] };
},

ctrlC() {
return this.command('.interrupt');
},
Expand All @@ -127,19 +143,24 @@ function startCLI(args, flags = []) {
.map((match) => +match[1]);
},

command(input, flush = true) {
writeLine(input, flush = true) {
if (flush) {
this.flushOutput();
}
if (process.env.VERBOSE === '1') {
process.stderr.write(`< ${input}\n`);
}
child.stdin.write(input);
child.stdin.write('\n');
},

command(input, flush = true) {
this.writeLine(input, flush);
return this.waitForPrompt();
},

stepCommand(input) {
this.flushOutput();
child.stdin.write(input);
child.stdin.write('\n');
this.writeLine(input, true);
return this
.waitFor(BREAK_MESSAGE)
.then(() => this.waitForPrompt());
Expand Down
5 changes: 3 additions & 2 deletions deps/node-inspect/test/cli/use-strict.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@ test('for whiles that starts with strict directive', (t) => {
return cli.waitForInitialBreak()
.then(() => cli.waitForPrompt())
.then(() => {
const brk = cli.breakInfo;
t.match(
cli.output,
/break in [^:]+:(?:1|2)[^\d]/,
`${brk.line}`,
/^(1|2)$/,
'pauses either on strict directive or first "real" line');
})
.then(() => cli.quit())
Expand Down