diff --git a/test/common/index.js b/test/common/index.js index a1afd824ce836e..851f001c798c4a 100644 --- a/test/common/index.js +++ b/test/common/index.js @@ -180,6 +180,10 @@ Object.defineProperty(exports, 'localhostIPv4', { } }); +Object.defineProperty(exports, 'localhostIPv6', { + get: () => '::1' +}); + // opensslCli defined lazily to reduce overhead of spawnSync Object.defineProperty(exports, 'opensslCli', { get: function() { if (opensslCli !== null) return opensslCli; diff --git a/test/sequential/test-net-connect-local-error.js b/test/sequential/test-net-connect-local-error.js index 205ff872cd8090..6f5139aefb226d 100644 --- a/test/sequential/test-net-connect-local-error.js +++ b/test/sequential/test-net-connect-local-error.js @@ -6,20 +6,39 @@ const net = require('net'); // EADDRINUSE is expected to occur on FreeBSD // Ref: https://github.com/nodejs/node/issues/13055 const expectedErrorCodes = ['ECONNREFUSED', 'EADDRINUSE']; -const client = net.connect({ + +const optionsIPv4 = { port: common.PORT, localPort: common.PORT + 1, localAddress: common.localhostIPv4 -}); +}; + +const optionsIPv6 = { + host: common.localhostIPv6, + port: common.PORT + 2, + localPort: common.PORT + 3, + localAddress: common.localhostIPv6 +}; -client.on('error', common.mustCall(function onError(err) { +function onError(err, options) { assert.ok(expectedErrorCodes.includes(err.code)); assert.strictEqual(err.syscall, 'connect'); - assert.strictEqual(err.localPort, common.PORT + 1); - assert.strictEqual(err.localAddress, common.localhostIPv4); + assert.strictEqual(err.localPort, options.localPort); + assert.strictEqual(err.localAddress, options.localAddress); assert.strictEqual( err.message, `connect ${err.code} ${err.address}:${err.port} ` + `- Local (${err.localAddress}:${err.localPort})` ); -})); +} + +const clientIPv4 = net.connect(optionsIPv4); +clientIPv4.on('error', common.mustCall((err) => onError(err, optionsIPv4))); + +if (!common.hasIPv6) { + common.printSkipMessage('ipv6 part of test, no IPv6 support'); + return; +} + +const clientIPv6 = net.connect(optionsIPv6); +clientIPv6.on('error', common.mustCall((err) => onError(err, optionsIPv6)));