1import * as common from '../common/index.mjs';
2import * as fixtures from '../common/fixtures.mjs';
3import assert from 'node:assert';
4
5common.skipIfInspectorDisabled();
6
7
8const debuggerPort = common.getPort();
9
10async function spawnRunner({ execArgv, expectedPort, expectedHost, expectedInitialPort, inspectPort }) {
11  const { code, signal } = await common.spawnPromisified(
12    process.execPath,
13    ['--expose-internals', '--no-warnings', ...execArgv, fixtures.path('test-runner/run_inspect.js')], {
14      env: { ...process.env,
15             expectedPort,
16             inspectPort,
17             expectedHost,
18             expectedInitialPort }
19    });
20  assert.strictEqual(code, 0);
21  assert.strictEqual(signal, null);
22}
23
24let offset = 0;
25
26const defaultPortCase = spawnRunner({
27  execArgv: ['--inspect'],
28  expectedPort: 9230,
29});
30
31await spawnRunner({
32  execArgv: ['--inspect=65535'],
33  expectedPort: 1024,
34});
35
36let port = debuggerPort + offset++ * 5;
37
38await spawnRunner({
39  execArgv: [`--inspect=${port}`],
40  expectedPort: port + 1,
41});
42
43port = debuggerPort + offset++ * 5;
44
45await spawnRunner({
46  execArgv: ['--inspect', `--inspect-port=${port}`],
47  expectedPort: port + 1,
48});
49
50port = debuggerPort + offset++ * 5;
51
52await spawnRunner({
53  execArgv: ['--inspect', `--debug-port=${port}`],
54  expectedPort: port + 1,
55});
56
57port = debuggerPort + offset++ * 5;
58
59await spawnRunner({
60  execArgv: [`--inspect=0.0.0.0:${port}`],
61  expectedPort: port + 1, expectedHost: '0.0.0.0',
62});
63
64port = debuggerPort + offset++ * 5;
65
66await spawnRunner({
67  execArgv: [`--inspect=127.0.0.1:${port}`],
68  expectedPort: port + 1, expectedHost: '127.0.0.1'
69});
70
71if (common.hasIPv6) {
72  port = debuggerPort + offset++ * 5;
73
74  await spawnRunner({
75    execArgv: [`--inspect=[::]:${port}`],
76    expectedPort: port + 1, expectedHost: '::'
77  });
78
79  port = debuggerPort + offset++ * 5;
80
81  await spawnRunner({
82    execArgv: [`--inspect=[::1]:${port}`],
83    expectedPort: port + 1, expectedHost: '::1'
84  });
85}
86
87// These tests check that setting inspectPort in run
88// would take effect and override port incrementing behavior
89
90port = debuggerPort + offset++ * 5;
91
92await spawnRunner({
93  execArgv: [`--inspect=${port}`],
94  inspectPort: port + 2,
95  expectedPort: port + 2,
96});
97
98port = debuggerPort + offset++ * 5;
99
100await spawnRunner({
101  execArgv: [`--inspect=${port}`],
102  inspectPort: 'addTwo',
103  expectedPort: port + 2,
104});
105
106port = debuggerPort + offset++ * 5;
107
108await spawnRunner({
109  execArgv: [`--inspect=${port}`],
110  inspectPort: 'string',
111});
112
113port = debuggerPort + offset++ * 5;
114
115await spawnRunner({
116  execArgv: [`--inspect=${port}`],
117  inspectPort: 'null',
118  expectedPort: port + 1,
119});
120
121port = debuggerPort + offset++ * 5;
122
123await spawnRunner({
124  execArgv: [`--inspect=${port}`],
125  inspectPort: 'bignumber',
126});
127
128port = debuggerPort + offset++ * 5;
129
130await spawnRunner({
131  execArgv: [`--inspect=${port}`],
132  inspectPort: 'negativenumber',
133});
134
135port = debuggerPort + offset++ * 5;
136
137await spawnRunner({
138  execArgv: [`--inspect=${port}`],
139  inspectPort: 'bignumberfunc'
140});
141
142port = debuggerPort + offset++ * 5;
143
144await spawnRunner({
145  execArgv: [`--inspect=${port}`],
146  inspectPort: 'strfunc',
147});
148
149port = debuggerPort + offset++ * 5;
150
151await spawnRunner({
152  execArgv: [`--inspect=${port}`],
153  inspectPort: 0,
154  expectedInitialPort: 0,
155});
156
157await defaultPortCase;
158
159port = debuggerPort + offset++ * 5;
160await spawnRunner({
161  execArgv: ['--inspect'],
162  inspectPort: port + 2,
163  expectedInitialPort: port + 2,
164});
165