Skip to content

Commit 90a98a6

Browse files
MoLowRafaelGSS
authored andcommitted
test: split watch mode inspector tests to sequential
PR-URL: #44551 Reviewed-By: Kohei Ueno <kohei.ueno119@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Nitzan Uziely <linkgoron@gmail.com>
1 parent 00185f1 commit 90a98a6

2 files changed

Lines changed: 73 additions & 65 deletions

File tree

‎test/parallel/test-watch-mode.mjs‎

Lines changed: 0 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ import { writeFileSync, readFileSync } from 'node:fs';
1010
import{inspect}from'node:util';
1111
import{once}from'node:events';
1212
import{setTimeout}from'node:timers/promises';
13-
import{NodeInstance}from'../common/inspector-helper.js';
14-
1513

1614
if(common.isIBMi)
1715
common.skip('IBMi does not support `fs.watch()`');
@@ -236,67 +234,4 @@ describe('watch mode', { concurrency: false, timeout: 60_0000 }, () => {
236234
`Completed running ${inspect(file)}`,`Restarting ${inspect(file)}`,`Completed running ${inspect(file)}`,'',
237235
].join('\n'));
238236
});
239-
240-
describe('inspect',{
241-
skip: Boolean(process.config.variables.coverage||!process.features.inspector),
242-
},()=>{
243-
constsilentLogger={log: ()=>{},error: ()=>{}};
244-
asyncfunctiongetDebuggedPid(instance,waitForLog=true){
245-
constsession=awaitinstance.connectInspectorSession();
246-
awaitsession.send({method: 'Runtime.enable'});
247-
if(waitForLog){
248-
awaitsession.waitForConsoleOutput('log','safe to debug now');
249-
}
250-
const{value: innerPid}=(awaitsession.send({
251-
'method': 'Runtime.evaluate','params': {'expression': 'process.pid'}
252-
})).result;
253-
session.disconnect();
254-
returninnerPid;
255-
}
256-
257-
it('should start debugger on inner process',async()=>{
258-
constfile=fixtures.path('watch-mode/inspect.js');
259-
constinstance=newNodeInstance(['--inspect=0','--watch'],undefined,file,silentLogger);
260-
letstderr='';
261-
instance.on('stderr',(data)=>{stderr+=data;});
262-
263-
constpids=[instance.pid];
264-
pids.push(awaitgetDebuggedPid(instance));
265-
instance.resetPort();
266-
writeFileSync(file,readFileSync(file));
267-
pids.push(awaitgetDebuggedPid(instance));
268-
269-
awaitinstance.kill();
270-
271-
// There should be 3 pids (one parent + 2 restarts).
272-
// Message about Debugger should only appear twice.
273-
assert.strictEqual(stderr.match(/Debuggerlisteningonws:\/\//g).length,2);
274-
assert.strictEqual(newSet(pids).size,3);
275-
});
276-
277-
it('should prevent attaching debugger with SIGUSR1 to outer process',{skip: common.isWindows},async()=>{
278-
constfile=fixtures.path('watch-mode/inspect_with_signal.js');
279-
constinstance=newNodeInstance(['--inspect-port=0','--watch'],undefined,file,silentLogger);
280-
letstderr='';
281-
instance.on('stderr',(data)=>{stderr+=data;});
282-
283-
constloggedPid=awaitnewPromise((resolve)=>{
284-
instance.on('stdout',(data)=>{
285-
constmatches=data.match(/pidis(\d+)/);
286-
if(matches)resolve(Number(matches[1]));
287-
});
288-
});
289-
290-
291-
process.kill(instance.pid,'SIGUSR1');
292-
process.kill(loggedPid,'SIGUSR1');
293-
constdebuggedPid=awaitgetDebuggedPid(instance,false);
294-
295-
awaitinstance.kill();
296-
297-
// Message about Debugger should only appear once in inner process.
298-
assert.strictEqual(stderr.match(/Debuggerlisteningonws:\/\//g).length,1);
299-
assert.strictEqual(loggedPid,debuggedPid);
300-
});
301-
});
302237
});
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import*ascommonfrom'../common/index.mjs';
2+
import*asfixturesfrom'../common/fixtures.mjs';
3+
importassertfrom'node:assert';
4+
import{describe,it}from'node:test';
5+
import{writeFileSync,readFileSync}from'node:fs';
6+
import{NodeInstance}from'../common/inspector-helper.js';
7+
8+
9+
if(common.isIBMi)
10+
common.skip('IBMi does not support `fs.watch()`');
11+
12+
common.skipIfInspectorDisabled();
13+
14+
describe('watch mode - inspect',()=>{
15+
constsilentLogger={log: ()=>{},error: ()=>{}};
16+
asyncfunctiongetDebuggedPid(instance,waitForLog=true){
17+
constsession=awaitinstance.connectInspectorSession();
18+
awaitsession.send({method: 'Runtime.enable'});
19+
if(waitForLog){
20+
awaitsession.waitForConsoleOutput('log','safe to debug now');
21+
}
22+
const{value: innerPid}=(awaitsession.send({
23+
'method': 'Runtime.evaluate','params': {'expression': 'process.pid'}
24+
})).result;
25+
session.disconnect();
26+
returninnerPid;
27+
}
28+
29+
it('should start debugger on inner process',async()=>{
30+
constfile=fixtures.path('watch-mode/inspect.js');
31+
constinstance=newNodeInstance(['--inspect=0','--watch'],undefined,file,silentLogger);
32+
letstderr='';
33+
instance.on('stderr',(data)=>{stderr+=data;});
34+
35+
constpids=[instance.pid];
36+
pids.push(awaitgetDebuggedPid(instance));
37+
instance.resetPort();
38+
writeFileSync(file,readFileSync(file));
39+
pids.push(awaitgetDebuggedPid(instance));
40+
41+
awaitinstance.kill();
42+
43+
// There should be 3 pids (one parent + 2 restarts).
44+
// Message about Debugger should only appear twice.
45+
assert.strictEqual(stderr.match(/Debuggerlisteningonws:\/\//g).length,2);
46+
assert.strictEqual(newSet(pids).size,3);
47+
});
48+
49+
it('should prevent attaching debugger with SIGUSR1 to outer process',{skip: common.isWindows},async()=>{
50+
constfile=fixtures.path('watch-mode/inspect_with_signal.js');
51+
constinstance=newNodeInstance(['--inspect-port=0','--watch'],undefined,file,silentLogger);
52+
letstderr='';
53+
instance.on('stderr',(data)=>{stderr+=data;});
54+
55+
constloggedPid=awaitnewPromise((resolve)=>{
56+
instance.on('stdout',(data)=>{
57+
constmatches=data.match(/pidis(\d+)/);
58+
if(matches)resolve(Number(matches[1]));
59+
});
60+
});
61+
62+
63+
process.kill(instance.pid,'SIGUSR1');
64+
process.kill(loggedPid,'SIGUSR1');
65+
constdebuggedPid=awaitgetDebuggedPid(instance,false);
66+
67+
awaitinstance.kill();
68+
69+
// Message about Debugger should only appear once in inner process.
70+
assert.strictEqual(stderr.match(/Debuggerlisteningonws:\/\//g).length,1);
71+
assert.strictEqual(loggedPid,debuggedPid);
72+
});
73+
});

0 commit comments

Comments
 (0)