2323/* eslint-disable node-core/crypto-check */
2424'use strict';
2525const process = global.process; // Some tests tamper with the process global.
26- const path = require('path');
27- const fs = require('fs');
26+
2827const assert = require('assert');
29- const os = require('os');
3028const { exec, execSync, spawnSync } = require('child_process');
29+ const fs = require('fs');
30+ // Do not require 'os' until needed so that test-os-checked-fucnction can
31+ // monkey patch it. If 'os' is required here, that test will fail.
32+ const path = require('path');
3133const util = require('util');
34+ const { isMainThread } = require('worker_threads');
35+
3236const tmpdir = require('./tmpdir');
3337const bits = ['arm64', 'mips', 'mipsel', 'ppc64', 's390x', 'x64']
3438 .includes(process.arch) ? 64 : 32;
3539const hasIntl = !!process.config.variables.v8_enable_i18n_support;
36- const { isMainThread } = require('worker_threads');
3740
3841// Some tests assume a umask of 0o022 so set that up front. Tests that need a
3942// different umask will set it themselves.
@@ -102,23 +105,12 @@ if (process.argv.length === 2 &&
102105
103106const isWindows = process.platform === 'win32';
104107const isAIX = process.platform === 'aix';
105- // On IBMi, process.platform and os.platform() both return 'aix',
106- // It is not enough to differentiate between IBMi and real AIX system.
107- const isIBMi = os.type() === 'OS400';
108- const isLinuxPPCBE = (process.platform === 'linux') &&
109- (process.arch === 'ppc64') &&
110- (os.endianness() === 'BE');
111108const isSunOS = process.platform === 'sunos';
112109const isFreeBSD = process.platform === 'freebsd';
113110const isOpenBSD = process.platform === 'openbsd';
114111const isLinux = process.platform === 'linux';
115112const isOSX = process.platform === 'darwin';
116113
117- const enoughTestMem = os.totalmem() > 0x70000000; /* 1.75 Gb */
118- const cpus = os.cpus();
119- const enoughTestCpu = Array.isArray(cpus) &&
120- (cpus.length > 1 || cpus[0].speed > 999);
121-
122114const rootDir = isWindows ? 'c:\\' : '/';
123115
124116const buildType = process.config.target_defaults ?
@@ -198,15 +190,6 @@ const PIPE = (() => {
198190 return path.join(pipePrefix, pipeName);
199191})();
200192
201- const hasIPv6 = (() => {
202- const iFaces = os.networkInterfaces();
203- const re = isWindows ? /Loopback Pseudo-Interface/ : /lo/;
204- return Object.keys(iFaces).some((name) => {
205- return re.test(name) &&
206- iFaces[name].some(({ family }) => family === 'IPv6');
207- });
208- })();
209-
210193/*
211194 * Check that when running a test with
212195 * `$node --abort-on-uncaught-exception $file child`
@@ -749,8 +732,6 @@ module.exports = {
749732 childShouldThrowAndAbort,
750733 createZeroFilledFile,
751734 disableCrashOnUnhandledRejection,
752- enoughTestCpu,
753- enoughTestMem,
754735 expectsError,
755736 expectsInternalAssertion,
756737 expectWarning,
@@ -760,14 +741,11 @@ module.exports = {
760741 getTTYfd,
761742 hasIntl,
762743 hasCrypto,
763- hasIPv6,
764744 hasMultiLocalhost,
765745 isAIX,
766746 isAlive,
767747 isFreeBSD,
768- isIBMi,
769748 isLinux,
770- isLinuxPPCBE,
771749 isMainThread,
772750 isOpenBSD,
773751 isOSX,
@@ -791,12 +769,28 @@ module.exports = {
791769 skipIfReportDisabled,
792770 skipIfWorker,
793771
794- get localhostIPv6() { return '::1'; },
772+ get enoughTestCPU() {
773+ const cpus = require('os').cpus();
774+ return Array.isArray(cpus) && (cpus.length > 1 || cpus[0].speed > 999);
775+ },
776+
777+ get enoughTestMeme() {
778+ return require('os').totalmem() > 0x70000000; /* 1.75 Gb */
779+ },
795780
796781 get hasFipsCrypto() {
797782 return hasCrypto && require('crypto').getFips();
798783 },
799784
785+ get hasIPv6() {
786+ const iFaces = require('os').networkInterfaces();
787+ const re = isWindows ? /Loopback Pseudo-Interface/ : /lo/;
788+ return Object.keys(iFaces).some((name) => {
789+ return re.test(name) &&
790+ iFaces[name].some(({ family }) => family === 'IPv6');
791+ });
792+ },
793+
800794 get inFreeBSDJail() {
801795 if (inFreeBSDJail !== null) return inFreeBSDJail;
802796
@@ -809,6 +803,17 @@ module.exports = {
809803 return inFreeBSDJail;
810804 },
811805
806+ // On IBMi, process.platform and os.platform() both return 'aix',
807+ // It is not enough to differentiate between IBMi and real AIX system.
808+ get isIBMi() {
809+ return require('os').type() === 'OS400';
810+ },
811+
812+ get isLinuxPPCBE() {
813+ return (process.platform === 'linux') && (process.arch === 'ppc64') &&
814+ (require('os').endianness() === 'BE');
815+ },
816+
812817 get localhostIPv4() {
813818 if (localhostIPv4 !== null) return localhostIPv4;
814819
@@ -830,6 +835,8 @@ module.exports = {
830835 return localhostIPv4;
831836 },
832837
838+ get localhostIPv6() { return '::1'; },
839+
833840 // opensslCli defined lazily to reduce overhead of spawnSync
834841 get opensslCli() {
835842 if (opensslCli !== null) return opensslCli;
0 commit comments