Skip to content
Prev Previous commit
Next Next commit
CR
  • Loading branch information
MoLow committed Sep 6, 2022
commit 2e344c3989d3a579b26cea61d2aa8f014750655c
88 changes: 57 additions & 31 deletions test/sequential/test-runner-run-inspect.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,27 @@ const childProcess = require('child_process');
const { values: { 'top-level': isTopLevel } } =
parseArgs({ options: { topLevel: { type: 'boolean' } }, strict: false });

async function spawnRunner({ execArgv, expectedPort, expectedHost, expectedInitialPort, inspectPort }) {
const { code, signal } = await new Promise((resolve) => {
childProcess.spawn(process.execPath,
Comment thread
MoLow marked this conversation as resolved.
Outdated
['--expose-internals', '--no-warnings', ...execArgv, __filename, '--top-level'], {
env: { ...process.env,
expectedPort: JSON.stringify(expectedPort),
inspectPort,
expectedHost,
expectedInitialPort,
testProcess: true },
stdio: 'inherit',
}).on('exit', (code, signal) => resolve({ code, signal }));
});
assert.strictEqual(code, 0);
assert.strictEqual(signal, null);
}

let offset = 0;

async function testRunnerMain() {
await spawnRunner({
const defaultPortCase = spawnRunner({
execArgv: ['--inspect'],
expectedPort: 9230,
});
Expand Down Expand Up @@ -51,29 +68,29 @@ async function testRunnerMain() {

await spawnRunner({
execArgv: [`--inspect=0.0.0.0:${port}`],
expectedPort: port + 1
expectedPort: port + 1, expectedHost: '0.0.0.0',
});

port = debuggerPort + offset++ * 5;

await spawnRunner({
execArgv: [`--inspect=127.0.0.1:${port}`],
expectedPort: port + 1
expectedPort: port + 1, expectedHost: '127.0.0.1'
});

if (common.hasIPv6) {
port = debuggerPort + offset++ * 5;

await spawnRunner({
execArgv: [`--inspect=[::]:${port}`],
expectedPort: port + 1
expectedPort: port + 1, expectedHost: '::'
});

port = debuggerPort + offset++ * 5;

await spawnRunner({
execArgv: [`--inspect=[::1]:${port}`],
expectedPort: port + 1
expectedPort: port + 1, expectedHost: '::1'
});
}

Expand Down Expand Up @@ -134,12 +151,30 @@ async function testRunnerMain() {

port = debuggerPort + offset++ * 5;

spawnRunner({
await spawnRunner({
execArgv: [`--inspect=${port}`],
inspectPort: 'strfunc',
});

port = debuggerPort + offset++ * 5;

await spawnRunner({
execArgv: [`--inspect=${port}`],
inspectPort: 0,
expectedInitialPort: 0,
});

await defaultPortCase;

port = debuggerPort + offset++ * 5;
await spawnRunner({
execArgv: ['--inspect'],
inspectPort: port + 2,
expectedInitialPort: port + 2,
});
}

const badPortError = { name: 'RangeError', code: 'ERR_SOCKET_BAD_PORT' };
function runTest() {
const { run } = require('node:test');
let inspectPort = 'inspectPort' in process.env ? Number(process.env.inspectPort) : undefined;
Expand All @@ -149,21 +184,21 @@ function runTest() {
inspectPort = common.mustCall(() => { return process.debugPort += 2; });
} else if (process.env.inspectPort === 'string') {
inspectPort = 'string';
expectedError = { name: 'RangeError', code: 'ERR_SOCKET_BAD_PORT' };
expectedError = badPortError;
} else if (process.env.inspectPort === 'null') {
inspectPort = null;
} else if (process.env.inspectPort === 'bignumber') {
inspectPort = 1293812;
expectedError = { name: 'RangeError', code: 'ERR_SOCKET_BAD_PORT' };
expectedError = badPortError;
} else if (process.env.inspectPort === 'negativenumber') {
inspectPort = -9776;
expectedError = { name: 'RangeError', code: 'ERR_SOCKET_BAD_PORT' };
expectedError = badPortError;
} else if (process.env.inspectPort === 'bignumberfunc') {
inspectPort = common.mustCall(() => 123121);
expectedError = { name: 'RangeError', code: 'ERR_SOCKET_BAD_PORT' };
expectedError = badPortError;
} else if (process.env.inspectPort === 'strfunc') {
inspectPort = common.mustCall(() => 'invalidPort');
expectedError = { name: 'RangeError', code: 'ERR_SOCKET_BAD_PORT' };
expectedError = badPortError;
}

const stream = run({ files: [__filename], inspectPort });
Expand All @@ -178,31 +213,22 @@ function runTest() {


function assertParams() {
const { expectedPort } = process.env;
const { expectedPort, expectedInitialPort, expectedHost } = process.env;
const debugOptions =
require('internal/options').getOptionValue('--inspect-port');

if ('expectedPort' in process.env) {
assert.strictEqual(process.debugPort, +expectedPort);
}
process.exit();
}

function spawnRunner({ execArgv, expectedPort, inspectPort }) {
return new Promise((resolve) => {
childProcess.spawn(process.execPath, ['--no-warnings', ...execArgv, __filename, '--top-level'], {
env: { ...process.env,
expectedPort: JSON.stringify(expectedPort),
inspectPort,
testProcess: true },
stdio: 'inherit',
}).on('exit', common.mustCall((code, signal) => {
checkExitCode(code, signal);
resolve();
}));
});
}
if ('expectedInitialPort' in process.env) {
assert.strictEqual(debugOptions.port, +expectedInitialPort);
}

function checkExitCode(code, signal) {
assert.strictEqual(code, 0);
assert.strictEqual(signal, null);
if ('expectedHost' in process.env) {
assert.strictEqual(debugOptions.host, expectedHost);
}
process.exit();
}

if (!process.env.testProcess && !isTopLevel) {
Expand Down