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`
@@ -742,8 +725,6 @@ module.exports = {
742725 childShouldThrowAndAbort,
743726 createZeroFilledFile,
744727 disableCrashOnUnhandledRejection,
745- enoughTestCpu,
746- enoughTestMem,
747728 expectsError,
748729 expectsInternalAssertion,
749730 expectWarning,
@@ -753,14 +734,11 @@ module.exports = {
753734 getTTYfd,
754735 hasIntl,
755736 hasCrypto,
756- hasIPv6,
757737 hasMultiLocalhost,
758738 isAIX,
759739 isAlive,
760740 isFreeBSD,
761- isIBMi,
762741 isLinux,
763- isLinuxPPCBE,
764742 isMainThread,
765743 isOpenBSD,
766744 isOSX,
@@ -784,12 +762,28 @@ module.exports = {
784762 skipIfReportDisabled,
785763 skipIfWorker,
786764
787- get localhostIPv6 ( ) { return '::1' ; } ,
765+ get enoughTestCPU ( ) {
766+ const cpus = require ( 'os' ) . cpus ( ) ;
767+ return Array . isArray ( cpus ) && ( cpus . length > 1 || cpus [ 0 ] . speed > 999 ) ;
768+ } ,
769+
770+ get enoughTestMeme ( ) {
771+ return require ( 'os' ) . totalmem ( ) > 0x70000000 ; /* 1.75 Gb */
772+ } ,
788773
789774 get hasFipsCrypto ( ) {
790775 return hasCrypto && require ( 'crypto' ) . getFips ( ) ;
791776 } ,
792777
778+ get hasIPv6 ( ) {
779+ const iFaces = require ( 'os' ) . networkInterfaces ( ) ;
780+ 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 / ;
781+ return Object . keys ( iFaces ) . some ( ( name ) => {
782+ return re . test ( name ) &&
783+ iFaces [ name ] . some ( ( { family } ) => family === 'IPv6' ) ;
784+ } ) ;
785+ } ,
786+
793787 get inFreeBSDJail ( ) {
794788 if ( inFreeBSDJail !== null ) return inFreeBSDJail ;
795789
@@ -802,6 +796,17 @@ module.exports = {
802796 return inFreeBSDJail ;
803797 } ,
804798
799+ // On IBMi, process.platform and os.platform() both return 'aix',
800+ // It is not enough to differentiate between IBMi and real AIX system.
801+ get isIBMi ( ) {
802+ return require ( 'os' ) . type ( ) === 'OS400' ;
803+ } ,
804+
805+ get isLinuxPPCBE ( ) {
806+ return ( process . platform === 'linux' ) && ( process . arch === 'ppc64' ) &&
807+ ( require ( 'os' ) . endianness ( ) === 'BE' ) ;
808+ } ,
809+
805810 get localhostIPv4 ( ) {
806811 if ( localhostIPv4 !== null ) return localhostIPv4 ;
807812
@@ -823,6 +828,8 @@ module.exports = {
823828 return localhostIPv4 ;
824829 } ,
825830
831+ get localhostIPv6 ( ) { return '::1' ; } ,
832+
826833 // opensslCli defined lazily to reduce overhead of spawnSync
827834 get opensslCli ( ) {
828835 if ( opensslCli !== null ) return opensslCli ;
0 commit comments