From 9b67c1f53e81a09424d55a9a0acc4f85a71510f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Lal?= Date: Tue, 23 Sep 2025 14:41:52 +0200 Subject: [PATCH] test: fix inspector uri-encoded paths --- test/common/inspector-helper.js | 2 +- .../test-inspector-async-context-brk.js | 2 +- test/parallel/test-inspector-bindings.js | 2 +- .../test-inspector-multisession-js.js | 2 +- test/parallel/test-inspector-uriencode~d.js | 67 +++++++++++++++++++ 5 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 test/parallel/test-inspector-uriencode~d.js diff --git a/test/common/inspector-helper.js b/test/common/inspector-helper.js index 895e4c77972668..b629e0e0a98f12 100644 --- a/test/common/inspector-helper.js +++ b/test/common/inspector-helper.js @@ -175,7 +175,7 @@ class InspectorSession { this._scriptsIdsByUrl.set(scriptId, url); const fileUrl = url.startsWith('file:') ? url : pathToFileURL(url).toString(); - if (fileUrl === this.scriptURL().toString()) { + if (decodeURIComponent(fileUrl) === decodeURIComponent(this.scriptURL().toString())) { this.mainScriptId = scriptId; } } diff --git a/test/parallel/test-inspector-async-context-brk.js b/test/parallel/test-inspector-async-context-brk.js index 1fd2b45e535966..0f9061607e75d3 100644 --- a/test/parallel/test-inspector-async-context-brk.js +++ b/test/parallel/test-inspector-async-context-brk.js @@ -35,7 +35,7 @@ async function test() { await new Promise((resolve, reject) => { session.post('Debugger.setBreakpointByUrl', { 'lineNumber': 22, - 'url': pathToFileURL(path.resolve(__dirname, __filename)).toString(), + 'url': decodeURIComponent(pathToFileURL(path.resolve(__dirname, __filename)).toString()), 'columnNumber': 0, 'condition': '' }, (error, result) => { diff --git a/test/parallel/test-inspector-bindings.js b/test/parallel/test-inspector-bindings.js index 1f1d3699146814..fc7bdcd136a3b7 100644 --- a/test/parallel/test-inspector-bindings.js +++ b/test/parallel/test-inspector-bindings.js @@ -86,7 +86,7 @@ function testSampleDebugSession() { session.post('Debugger.enable', () => cbAsSecondArgCalled = true); session.post('Debugger.setBreakpointByUrl', { 'lineNumber': 13, - 'url': pathToFileURL(path.resolve(__dirname, __filename)).toString(), + 'url': decodeURIComponent(pathToFileURL(path.resolve(__dirname, __filename)).toString()), 'columnNumber': 0, 'condition': '' }); diff --git a/test/parallel/test-inspector-multisession-js.js b/test/parallel/test-inspector-multisession-js.js index 81c29e49183645..fb1c9d188b7654 100644 --- a/test/parallel/test-inspector-multisession-js.js +++ b/test/parallel/test-inspector-multisession-js.js @@ -34,7 +34,7 @@ async function test() { await new Promise((resolve, reject) => { session1.post('Debugger.setBreakpointByUrl', { 'lineNumber': 12, - 'url': pathToFileURL(path.resolve(__dirname, __filename)).toString(), + 'url': decodeURIComponent(pathToFileURL(path.resolve(__dirname, __filename)).toString()), 'columnNumber': 0, 'condition': '' }, (error, result) => { diff --git a/test/parallel/test-inspector-uriencode~d.js b/test/parallel/test-inspector-uriencode~d.js new file mode 100644 index 00000000000000..f43aab99de37f3 --- /dev/null +++ b/test/parallel/test-inspector-uriencode~d.js @@ -0,0 +1,67 @@ +'use strict'; +const common = require('../common'); + +common.skipIfInspectorDisabled(); + +const assert = require('assert'); +const { Session } = require('inspector'); +const path = require('path'); +const { pathToFileURL } = require('url'); + +function debugged() { + return 42; +} + +async function test() { + // Check without properly decoding + const session1 = new Session(); + session1.connect(); + let session1Paused = false; + session1.on('Debugger.paused', () => session1Paused = true); + session1.post('Debugger.enable'); + + await new Promise((resolve, reject) => { + session1.post('Debugger.setBreakpointByUrl', { + 'lineNumber': 12, + 'url': pathToFileURL(path.resolve(__dirname, __filename)).toString(), + 'columnNumber': 0, + 'condition': '' + }, (error, result) => { + return error ? reject(error) : resolve(result); + }); + }); + + debugged(); + + assert(!session1Paused); + session1.disconnect(); + + // Check correctly with another session + let session2Paused = false; + const session2 = new Session(); + session2.connect(); + session2.on('Debugger.paused', () => session2Paused = true); + session2.post('Debugger.enable'); + + await new Promise((resolve, reject) => { + session2.post('Debugger.setBreakpointByUrl', { + 'lineNumber': 12, + 'url': decodeURIComponent(pathToFileURL(path.resolve(__dirname, __filename)).toString()), + 'columnNumber': 0, + 'condition': '' + }, (error, result) => { + return error ? reject(error) : resolve(result); + }); + }); + + debugged(); + + assert(session2Paused); + session2.disconnect(); +} + +const interval = setInterval(() => {}, 1000); +test().then(common.mustCall(() => { + clearInterval(interval); + console.log('Done!'); +}));