Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 29f807e

Browse filesBrowse files
TrottMylesBorins
authored andcommitted
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: #30914 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com>
1 parent 69ec9be commit 29f807e
Copy full SHA for 29f807e

File tree

Expand file treeCollapse file tree

1 file changed

+37
-30
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

1 file changed

+37
-30
lines changed
Open diff view settings
Collapse file

‎test/common/index.js‎

Copy file name to clipboardExpand all lines: test/common/index.js
+37-30Lines changed: 37 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,20 @@
2323
/* eslint-disable node-core/crypto-check */
2424
'use strict';
2525
const process = global.process; // Some tests tamper with the process global.
26-
const path = require('path');
27-
const fs = require('fs');
26+
2827
const assert = require('assert');
29-
const os = require('os');
3028
const { 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');
3133
const util = require('util');
34+
const { isMainThread } = require('worker_threads');
35+
3236
const tmpdir = require('./tmpdir');
3337
const bits = ['arm64', 'mips', 'mipsel', 'ppc64', 's390x', 'x64']
3438
.includes(process.arch) ? 64 : 32;
3539
const 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

103106
const isWindows = process.platform === 'win32';
104107
const 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');
111108
const isSunOS = process.platform === 'sunos';
112109
const isFreeBSD = process.platform === 'freebsd';
113110
const isOpenBSD = process.platform === 'openbsd';
114111
const isLinux = process.platform === 'linux';
115112
const 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-
122114
const rootDir = isWindows ? 'c:\\' : '/';
123115

124116
const 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

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.