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 ? / L o o p b a c k P s e u d o - I n t e r f a c e / : / l o / ;
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 ? / L o o p b a c k P s e u d o - I n t e r f a c e / : / l o / ;
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