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 74db9f4

Browse filesBrowse 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
Copy full SHA for 74db9f4

File tree

Expand file treeCollapse file tree

2 files changed

+22
-9
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+22
-9
lines changed
Open diff view settings
Collapse file

‎lib/assert.js‎

Copy file name to clipboardExpand all lines: lib/assert.js
+14-4Lines 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+
let isDeepEqual;
36+
let isDeepStrictEqual;
37+
38+
function lazyLoadComparison() {
39+
const comparison = 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 = function deepEqual(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 = function notDeepEqual(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 = function deepStrictEqual(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
function notDeepStrictEqual(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 (expected instanceof Error) {
440449
keys.push('name', 'message');
441450
}
451+
if (isDeepEqual === undefined) lazyLoadComparison();
442452
for (const key of keys) {
443453
if (typeof actual[key] === 'string' &&
444454
isRegExp(expected[key]) &&
Collapse file

‎lib/util.js‎

Copy file name to clipboardExpand all lines: lib/util.js
+8-5Lines 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
const errorToString = Error.prototype.toString;
9692

9793
let CIRCULAR_ERROR_MESSAGE;
94+
let internalDeepEqual;
9895

9996
/* eslint-disable */
10097
const strEscapeSequencesRegExp = /[\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+
return internalDeepEqual(a, b);
1267+
},
12651268
isNull,
12661269
isNullOrUndefined,
12671270
isNumber,

0 commit comments

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