diff --git a/test/common/index.js b/test/common/index.js index 4930f6163e8fde..71759bae142ec3 100644 --- a/test/common/index.js +++ b/test/common/index.js @@ -57,6 +57,8 @@ const isOpenBSD = process.platform === 'openbsd'; const isLinux = process.platform === 'linux'; const isOSX = process.platform === 'darwin'; +const isOSXMojave = isOSX && (os.release().startsWith('18')); + const enoughTestMem = os.totalmem() > 0x70000000; /* 1.75 Gb */ const cpus = os.cpus(); const enoughTestCpu = Array.isArray(cpus) && @@ -711,6 +713,7 @@ module.exports = { isMainThread, isOpenBSD, isOSX, + isOSXMojave, isSunOS, isWindows, localIPv6Hosts, diff --git a/test/known_issues/test-cluster-bind-privileged-port.js b/test/known_issues/test-cluster-bind-privileged-port.js new file mode 100644 index 00000000000000..6ada04aa030b31 --- /dev/null +++ b/test/known_issues/test-cluster-bind-privileged-port.js @@ -0,0 +1,25 @@ +'use strict'; +const common = require('../common'); + +// This test should fail on macOS (10.14) due to an issue with privileged ports. + +const assert = require('assert'); +const cluster = require('cluster'); +const net = require('net'); + +if (!common.isOSXMojave) + assert.fail('Code should fail only on macOS Mojave.'); + + +if (cluster.isMaster) { + cluster.fork().on('exit', common.mustCall((exitCode) => { + assert.strictEqual(exitCode, 0); + })); +} else { + const s = net.createServer(common.mustNotCall()); + s.listen(42, common.mustNotCall('listen should have failed')); + s.on('error', common.mustCall((err) => { + assert.strictEqual(err.code, 'EACCES'); + process.disconnect(); + })); +} diff --git a/test/parallel/test-cluster-bind-privileged-port.js b/test/parallel/test-cluster-bind-privileged-port.js index 99f7a20c4946be..9d155259c3789e 100644 --- a/test/parallel/test-cluster-bind-privileged-port.js +++ b/test/parallel/test-cluster-bind-privileged-port.js @@ -21,6 +21,11 @@ 'use strict'; const common = require('../common'); + +// Skip on OS X Mojave. https://github.com/nodejs/node/issues/21679 +if (common.isOSXMojave) + common.skip('bypass test for Mojave due to OSX issue'); + if (common.isWindows) common.skip('not reliable on Windows.'); diff --git a/test/parallel/test-cluster-shared-handle-bind-privileged-port.js b/test/parallel/test-cluster-shared-handle-bind-privileged-port.js index 8f05b28fed3308..1edece30af6de9 100644 --- a/test/parallel/test-cluster-shared-handle-bind-privileged-port.js +++ b/test/parallel/test-cluster-shared-handle-bind-privileged-port.js @@ -21,6 +21,11 @@ 'use strict'; const common = require('../common'); + +// Skip on OS X Mojave. https://github.com/nodejs/node/issues/21679 +if (common.isOSXMojave) + common.skip('bypass test for Mojave due to OSX issue'); + if (common.isWindows) common.skip('not reliable on Windows');