diff options
Diffstat (limited to 'test/parallel/test-inspector-port-zero.js')
-rw-r--r-- | test/parallel/test-inspector-port-zero.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/test/parallel/test-inspector-port-zero.js b/test/parallel/test-inspector-port-zero.js new file mode 100644 index 0000000000..a3eb08e5fb --- /dev/null +++ b/test/parallel/test-inspector-port-zero.js @@ -0,0 +1,53 @@ +'use strict'; +const { mustCall, skipIfInspectorDisabled } = require('../common'); + +skipIfInspectorDisabled(); + +const assert = require('assert'); +const { URL } = require('url'); +const { spawn } = require('child_process'); + +function test(arg, port = '') { + const args = [arg, '-p', 'process.debugPort']; + const proc = spawn(process.execPath, args); + proc.stdout.setEncoding('utf8'); + proc.stderr.setEncoding('utf8'); + let stdout = ''; + let stderr = ''; + proc.stdout.on('data', (data) => stdout += data); + proc.stderr.on('data', (data) => stderr += data); + proc.stdout.on('close', assert.ifError); + proc.stderr.on('close', assert.ifError); + proc.stderr.on('data', () => { + if (!stderr.includes('\n')) return; + assert(/Debugger listening on (.+)/.test(stderr)); + port = new URL(RegExp.$1).port; + assert(+port > 0); + }); + if (/inspect-brk/.test(arg)) { + proc.stderr.on('data', () => { + if (stderr.includes('\n') && !proc.killed) proc.kill(); + }); + } else { + let onclose = () => { + onclose = () => assert.strictEqual(port, stdout.trim()); + }; + proc.stdout.on('close', mustCall(() => onclose())); + proc.stderr.on('close', mustCall(() => onclose())); + proc.on('exit', mustCall((exitCode) => assert.strictEqual(exitCode, 0))); + } +} + +test('--inspect=0'); +test('--inspect=127.0.0.1:0'); +test('--inspect=localhost:0'); + +test('--inspect-brk=0'); +test('--inspect-brk=127.0.0.1:0'); +test('--inspect-brk=localhost:0'); + +// In these cases, the inspector doesn't listen, so an ephemeral port is not +// allocated and the expected value of `process.debugPort` is `0`. +test('--inspect-port=0', '0'); +test('--inspect-port=127.0.0.1:0', '0'); +test('--inspect-port=localhost:0', '0'); |