Skip to content

Commit 74db9f4

Browse files
BridgeARMylesBorins
authored andcommitted
assert,util: lazy load comparison functions
PR-URL: #20567 Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
1 parent 2361f64 commit 74db9f4

2 files changed

Lines changed: 22 additions & 9 deletions

File tree

‎lib/assert.js‎

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,6 @@
2121
'use strict';
2222

2323
const{ Buffer }=require('buffer');
24-
const{
25-
isDeepEqual,
26-
isDeepStrictEqual
27-
}=require('internal/util/comparisons');
2824
const{codes: {
2925
ERR_AMBIGUOUS_ARGUMENT,
3026
ERR_INVALID_ARG_TYPE,
@@ -36,6 +32,15 @@ const { inspect, types: { isPromise, isRegExp } } = require('util');
3632
const{EOL}=require('internal/constants');
3733
const{ NativeModule }=require('internal/bootstrap/loaders');
3834

35+
letisDeepEqual;
36+
letisDeepStrictEqual;
37+
38+
functionlazyLoadComparison(){
39+
constcomparison=require('internal/util/comparisons');
40+
isDeepEqual=comparison.isDeepEqual;
41+
isDeepStrictEqual=comparison.isDeepStrictEqual;
42+
}
43+
3944
// Escape control characters but not \n and \t to keep the line breaks and
4045
// indentation intact.
4146
// eslint-disable-next-line no-control-regex
@@ -284,6 +289,7 @@ assert.notEqual = function notEqual(actual, expected, message) {
284289

285290
// The equivalence assertion tests a deep equality relation.
286291
assert.deepEqual=functiondeepEqual(actual,expected,message){
292+
if(isDeepEqual===undefined)lazyLoadComparison();
287293
if(!isDeepEqual(actual,expected)){
288294
innerFail({
289295
actual,
@@ -297,6 +303,7 @@ assert.deepEqual = function deepEqual(actual, expected, message) {
297303

298304
// The non-equivalence assertion tests for any deep inequality.
299305
assert.notDeepEqual=functionnotDeepEqual(actual,expected,message){
306+
if(isDeepEqual===undefined)lazyLoadComparison();
300307
if(isDeepEqual(actual,expected)){
301308
innerFail({
302309
actual,
@@ -310,6 +317,7 @@ assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
310317
/* eslint-enable */
311318

312319
assert.deepStrictEqual=functiondeepStrictEqual(actual,expected,message){
320+
if(isDeepEqual===undefined)lazyLoadComparison();
313321
if(!isDeepStrictEqual(actual,expected)){
314322
innerFail({
315323
actual,
@@ -323,6 +331,7 @@ assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
323331

324332
assert.notDeepStrictEqual=notDeepStrictEqual;
325333
functionnotDeepStrictEqual(actual,expected,message){
334+
if(isDeepEqual===undefined)lazyLoadComparison();
326335
if(isDeepStrictEqual(actual,expected)){
327336
innerFail({
328337
actual,
@@ -439,6 +448,7 @@ function expectedException(actual, expected, msg) {
439448
if(expectedinstanceofError){
440449
keys.push('name','message');
441450
}
451+
if(isDeepEqual===undefined)lazyLoadComparison();
442452
for(constkeyofkeys){
443453
if(typeofactual[key]==='string'&&
444454
isRegExp(expected[key])&&

‎lib/util.js‎

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,6 @@ const {
6464
isTypedArray
6565
}=types;
6666

67-
const{
68-
isDeepStrictEqual
69-
}=require('internal/util/comparisons');
70-
7167
const{
7268
customInspectSymbol,
7369
deprecate,
@@ -95,6 +91,7 @@ const dateToISOString = Date.prototype.toISOString;
9591
consterrorToString=Error.prototype.toString;
9692

9793
letCIRCULAR_ERROR_MESSAGE;
94+
letinternalDeepEqual;
9895

9996
/* eslint-disable */
10097
conststrEscapeSequencesRegExp=/[\x00-\x1f\x27\x5c]/;
@@ -1261,7 +1258,13 @@ module.exports = exports = {
12611258
isArray: Array.isArray,
12621259
isBoolean,
12631260
isBuffer,
1264-
isDeepStrictEqual,
1261+
isDeepStrictEqual(a,b){
1262+
if(internalDeepEqual===undefined){
1263+
internalDeepEqual=require('internal/util/comparisons')
1264+
.isDeepStrictEqual;
1265+
}
1266+
returninternalDeepEqual(a,b);
1267+
},
12651268
isNull,
12661269
isNullOrUndefined,
12671270
isNumber,

0 commit comments

Comments
 (0)