mirror of https://github.com/nodejs/node.git
test: delay loading 'os' in test/common module
There is a test that doesn't load the common module initially because it needs to monkey-patch the 'os' module. I think it would be a good idea to minimize the side-effects of loading common anyway, so let's defer loading 'os' unless/until it's actually needed. PR-URL: https://github.com/nodejs/node/pull/30914 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com>
This commit is contained in:
parent
cb76f27122
commit
1ddcb6d2a7
|
@ -23,17 +23,20 @@
|
|||
/* eslint-disable node-core/crypto-check */
|
||||
'use strict';
|
||||
const process = global.process; // Some tests tamper with the process global.
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const assert = require('assert');
|
||||
const os = require('os');
|
||||
const { exec, execSync, spawnSync } = require('child_process');
|
||||
const fs = require('fs');
|
||||
// Do not require 'os' until needed so that test-os-checked-fucnction can
|
||||
// monkey patch it. If 'os' is required here, that test will fail.
|
||||
const path = require('path');
|
||||
const util = require('util');
|
||||
const { isMainThread } = require('worker_threads');
|
||||
|
||||
const tmpdir = require('./tmpdir');
|
||||
const bits = ['arm64', 'mips', 'mipsel', 'ppc64', 's390x', 'x64']
|
||||
.includes(process.arch) ? 64 : 32;
|
||||
const hasIntl = !!process.config.variables.v8_enable_i18n_support;
|
||||
const { isMainThread } = require('worker_threads');
|
||||
|
||||
// Some tests assume a umask of 0o022 so set that up front. Tests that need a
|
||||
// different umask will set it themselves.
|
||||
|
@ -102,23 +105,12 @@ if (process.argv.length === 2 &&
|
|||
|
||||
const isWindows = process.platform === 'win32';
|
||||
const isAIX = process.platform === 'aix';
|
||||
// On IBMi, process.platform and os.platform() both return 'aix',
|
||||
// It is not enough to differentiate between IBMi and real AIX system.
|
||||
const isIBMi = os.type() === 'OS400';
|
||||
const isLinuxPPCBE = (process.platform === 'linux') &&
|
||||
(process.arch === 'ppc64') &&
|
||||
(os.endianness() === 'BE');
|
||||
const isSunOS = process.platform === 'sunos';
|
||||
const isFreeBSD = process.platform === 'freebsd';
|
||||
const isOpenBSD = process.platform === 'openbsd';
|
||||
const isLinux = process.platform === 'linux';
|
||||
const isOSX = process.platform === 'darwin';
|
||||
|
||||
const enoughTestMem = os.totalmem() > 0x70000000; /* 1.75 Gb */
|
||||
const cpus = os.cpus();
|
||||
const enoughTestCpu = Array.isArray(cpus) &&
|
||||
(cpus.length > 1 || cpus[0].speed > 999);
|
||||
|
||||
const rootDir = isWindows ? 'c:\\' : '/';
|
||||
|
||||
const buildType = process.config.target_defaults ?
|
||||
|
@ -198,15 +190,6 @@ const PIPE = (() => {
|
|||
return path.join(pipePrefix, pipeName);
|
||||
})();
|
||||
|
||||
const hasIPv6 = (() => {
|
||||
const iFaces = os.networkInterfaces();
|
||||
const re = isWindows ? /Loopback Pseudo-Interface/ : /lo/;
|
||||
return Object.keys(iFaces).some((name) => {
|
||||
return re.test(name) &&
|
||||
iFaces[name].some(({ family }) => family === 'IPv6');
|
||||
});
|
||||
})();
|
||||
|
||||
/*
|
||||
* Check that when running a test with
|
||||
* `$node --abort-on-uncaught-exception $file child`
|
||||
|
@ -742,8 +725,6 @@ module.exports = {
|
|||
childShouldThrowAndAbort,
|
||||
createZeroFilledFile,
|
||||
disableCrashOnUnhandledRejection,
|
||||
enoughTestCpu,
|
||||
enoughTestMem,
|
||||
expectsError,
|
||||
expectsInternalAssertion,
|
||||
expectWarning,
|
||||
|
@ -753,14 +734,11 @@ module.exports = {
|
|||
getTTYfd,
|
||||
hasIntl,
|
||||
hasCrypto,
|
||||
hasIPv6,
|
||||
hasMultiLocalhost,
|
||||
isAIX,
|
||||
isAlive,
|
||||
isFreeBSD,
|
||||
isIBMi,
|
||||
isLinux,
|
||||
isLinuxPPCBE,
|
||||
isMainThread,
|
||||
isOpenBSD,
|
||||
isOSX,
|
||||
|
@ -784,12 +762,28 @@ module.exports = {
|
|||
skipIfReportDisabled,
|
||||
skipIfWorker,
|
||||
|
||||
get localhostIPv6() { return '::1'; },
|
||||
get enoughTestCPU() {
|
||||
const cpus = require('os').cpus();
|
||||
return Array.isArray(cpus) && (cpus.length > 1 || cpus[0].speed > 999);
|
||||
},
|
||||
|
||||
get enoughTestMeme() {
|
||||
return require('os').totalmem() > 0x70000000; /* 1.75 Gb */
|
||||
},
|
||||
|
||||
get hasFipsCrypto() {
|
||||
return hasCrypto && require('crypto').getFips();
|
||||
},
|
||||
|
||||
get hasIPv6() {
|
||||
const iFaces = require('os').networkInterfaces();
|
||||
const re = isWindows ? /Loopback Pseudo-Interface/ : /lo/;
|
||||
return Object.keys(iFaces).some((name) => {
|
||||
return re.test(name) &&
|
||||
iFaces[name].some(({ family }) => family === 'IPv6');
|
||||
});
|
||||
},
|
||||
|
||||
get inFreeBSDJail() {
|
||||
if (inFreeBSDJail !== null) return inFreeBSDJail;
|
||||
|
||||
|
@ -802,6 +796,17 @@ module.exports = {
|
|||
return inFreeBSDJail;
|
||||
},
|
||||
|
||||
// On IBMi, process.platform and os.platform() both return 'aix',
|
||||
// It is not enough to differentiate between IBMi and real AIX system.
|
||||
get isIBMi() {
|
||||
return require('os').type() === 'OS400';
|
||||
},
|
||||
|
||||
get isLinuxPPCBE() {
|
||||
return (process.platform === 'linux') && (process.arch === 'ppc64') &&
|
||||
(require('os').endianness() === 'BE');
|
||||
},
|
||||
|
||||
get localhostIPv4() {
|
||||
if (localhostIPv4 !== null) return localhostIPv4;
|
||||
|
||||
|
@ -823,6 +828,8 @@ module.exports = {
|
|||
return localhostIPv4;
|
||||
},
|
||||
|
||||
get localhostIPv6() { return '::1'; },
|
||||
|
||||
// opensslCli defined lazily to reduce overhead of spawnSync
|
||||
get opensslCli() {
|
||||
if (opensslCli !== null) return opensslCli;
|
||||
|
|
Loading…
Reference in New Issue