Skip to content

Commit

Permalink
test: disambiguate AIX and IBM i
Browse files Browse the repository at this point in the history
When built with Python 3.9 on IBM i, `process.platform` will return
`os400` instead of `aix`. In preparation for this, make `common.isAIX`
only return true for AIX and update the tests to add checks for
`common.isIBMi` where they were missing.

PR-URL: #48056
Refs: #46739
Refs: nodejs/build#3358
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Michael Dawson <midawson@redhat.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
  • Loading branch information
richardlau authored and targos committed Oct 27, 2023
1 parent 088460d commit e3ea906
Show file tree
Hide file tree
Showing 13 changed files with 25 additions and 18 deletions.
1 change: 1 addition & 0 deletions test/abort/test-addon-uv-handle-leak.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ if (process.argv[2] === 'child') {

if (!(common.isFreeBSD ||
common.isAIX ||
common.isIBMi ||
(common.isLinux && !isGlibc()) ||
common.isWindows)) {
assert(stderr.includes('ExampleOwnerClass'), stderr);
Expand Down
9 changes: 6 additions & 3 deletions test/common/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,6 @@ if (process.argv.length === 2 &&
}

const isWindows = process.platform === 'win32';
const isAIX = process.platform === 'aix';
const isSunOS = process.platform === 'sunos';
const isFreeBSD = process.platform === 'freebsd';
const isOpenBSD = process.platform === 'openbsd';
Expand Down Expand Up @@ -262,7 +261,7 @@ function platformTimeout(ms) {
if (process.features.debug)
ms = multipliers.two * ms;

if (isAIX)
if (exports.isAIX || exports.isIBMi)
return multipliers.two * ms; // Default localhost speed is slower on AIX

if (isPi)
Expand Down Expand Up @@ -902,7 +901,6 @@ const common = {
hasQuic,
hasMultiLocalhost,
invalidArgTypeHelper,
isAIX,
isAlive,
isAsan,
isDumbTerminal,
Expand Down Expand Up @@ -966,7 +964,12 @@ const common = {
},

// On IBMi, process.platform and os.platform() both return 'aix',
// when built with Python versions earlier than 3.9.
// It is not enough to differentiate between IBMi and real AIX system.
get isAIX() {
return require('os').type() === 'AIX';
},

get isIBMi() {
return require('os').type() === 'OS400';
},
Expand Down
2 changes: 1 addition & 1 deletion test/known_issues/test-cwd-enoent-file.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
const common = require('../common');
const assert = require('assert');

if (common.isSunOS || common.isWindows || common.isAIX) {
if (common.isSunOS || common.isWindows || common.isAIX || common.isIBMi) {
// The current working directory cannot be removed on these platforms.
// Change this to common.skip() when this is no longer a known issue test.
assert.fail('cannot rmdir current working directory');
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-cwd-enoent-preload.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict';
const common = require('../common');
// Fails with EINVAL on SmartOS, EBUSY on Windows, EBUSY on AIX.
if (common.isSunOS || common.isWindows || common.isAIX)
if (common.isSunOS || common.isWindows || common.isAIX || common.isIBMi)
common.skip('cannot rmdir current working directory');
if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-cwd-enoent-repl.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict';
const common = require('../common');
// Fails with EINVAL on SmartOS, EBUSY on Windows, EBUSY on AIX.
if (common.isSunOS || common.isWindows || common.isAIX)
if (common.isSunOS || common.isWindows || common.isAIX || common.isIBMi)
common.skip('cannot rmdir current working directory');
if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-cwd-enoent.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict';
const common = require('../common');
// Fails with EINVAL on SmartOS, EBUSY on Windows, EBUSY on AIX.
if (common.isSunOS || common.isWindows || common.isAIX)
if (common.isSunOS || common.isWindows || common.isAIX || common.isIBMi)
common.skip('cannot rmdir current working directory');
if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-fs-readfile-pipe-large.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const common = require('../common');

// Simulate `cat readfile.js | node readfile.js`

if (common.isWindows || common.isAIX)
if (common.isWindows || common.isAIX || common.isIBMi)
common.skip(`No /dev/stdin on ${process.platform}.`);

const assert = require('assert');
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-fs-readfile-pipe.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const common = require('../common');

// Simulate `cat readfile.js | node readfile.js`

if (common.isWindows || common.isAIX)
if (common.isWindows || common.isAIX || common.isIBMi)
common.skip(`No /dev/stdin on ${process.platform}.`);

const assert = require('assert');
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-fs-readfilesync-pipe-large.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const common = require('../common');

// Simulate `cat readfile.js | node readfile.js`

if (common.isWindows || common.isAIX)
if (common.isWindows || common.isAIX || common.isIBMi)
common.skip(`No /dev/stdin on ${process.platform}.`);

const assert = require('assert');
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-fs-realpath-pipe.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

const common = require('../common');

if (common.isWindows || common.isAIX)
if (common.isWindows || common.isAIX || common.isIBMi)
common.skip(`No /dev/stdin on ${process.platform}.`);

const assert = require('assert');
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-fs-utimes.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ function stat_resource(resource, statSync = fs.statSync) {
const stats = fs.fstatSync(resource);
// Ensure mtime has been written to disk
// except for directories on AIX where it cannot be synced
if (common.isAIX && stats.isDirectory())
if ((common.isAIX || common.isIBMi) && stats.isDirectory())
return stats;
fs.fsyncSync(resource);
return fs.fstatSync(resource);
Expand Down
13 changes: 8 additions & 5 deletions test/parallel/test-os.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,11 +81,14 @@ const hostname = os.hostname();
is.string(hostname);
assert.ok(hostname.length > 0);

const DUMMY_PRIORITY = 10;
os.setPriority(DUMMY_PRIORITY);
const priority = os.getPriority();
is.number(priority);
assert.strictEqual(priority, DUMMY_PRIORITY);
// IBMi process priority is different.
if (!common.isIBMi) {
const DUMMY_PRIORITY = 10;
os.setPriority(DUMMY_PRIORITY);
const priority = os.getPriority();
is.number(priority);
assert.strictEqual(priority, DUMMY_PRIORITY);
}

// On IBMi, os.uptime() returns 'undefined'
if (!common.isIBMi) {
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-process-dlopen-error-message-crash.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ assert.throws(() => {
}, ({ name, code, message }) => {
assert.strictEqual(name, 'Error');
assert.strictEqual(code, 'ERR_DLOPEN_FAILED');
if (!common.isAIX) {
if (!common.isAIX && !common.isIBMi) {
assert.match(message, /foo-%s\.node/);
}
return true;
Expand Down

0 comments on commit e3ea906

Please sign in to comment.