21
21
'use strict' ;
22
22
23
23
const { Buffer } = require ( 'buffer' ) ;
24
- const {
25
- isDeepEqual,
26
- isDeepStrictEqual
27
- } = require ( 'internal/util/comparisons' ) ;
28
24
const { codes : {
29
25
ERR_AMBIGUOUS_ARGUMENT ,
30
26
ERR_INVALID_ARG_TYPE ,
@@ -36,6 +32,15 @@ const { inspect, types: { isPromise, isRegExp } } = require('util');
36
32
const { EOL } = require ( 'internal/constants' ) ;
37
33
const { NativeModule } = require ( 'internal/bootstrap/loaders' ) ;
38
34
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
+
39
44
// Escape control characters but not \n and \t to keep the line breaks and
40
45
// indentation intact.
41
46
// eslint-disable-next-line no-control-regex
@@ -284,6 +289,7 @@ assert.notEqual = function notEqual(actual, expected, message) {
284
289
285
290
// The equivalence assertion tests a deep equality relation.
286
291
assert . deepEqual = function deepEqual ( actual , expected , message ) {
292
+ if ( isDeepEqual === undefined ) lazyLoadComparison ( ) ;
287
293
if ( ! isDeepEqual ( actual , expected ) ) {
288
294
innerFail ( {
289
295
actual,
@@ -297,6 +303,7 @@ assert.deepEqual = function deepEqual(actual, expected, message) {
297
303
298
304
// The non-equivalence assertion tests for any deep inequality.
299
305
assert . notDeepEqual = function notDeepEqual ( actual , expected , message ) {
306
+ if ( isDeepEqual === undefined ) lazyLoadComparison ( ) ;
300
307
if ( isDeepEqual ( actual , expected ) ) {
301
308
innerFail ( {
302
309
actual,
@@ -310,6 +317,7 @@ assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
310
317
/* eslint-enable */
311
318
312
319
assert . deepStrictEqual = function deepStrictEqual ( actual , expected , message ) {
320
+ if ( isDeepEqual === undefined ) lazyLoadComparison ( ) ;
313
321
if ( ! isDeepStrictEqual ( actual , expected ) ) {
314
322
innerFail ( {
315
323
actual,
@@ -323,6 +331,7 @@ assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
323
331
324
332
assert . notDeepStrictEqual = notDeepStrictEqual ;
325
333
function notDeepStrictEqual ( actual , expected , message ) {
334
+ if ( isDeepEqual === undefined ) lazyLoadComparison ( ) ;
326
335
if ( isDeepStrictEqual ( actual , expected ) ) {
327
336
innerFail ( {
328
337
actual,
@@ -439,6 +448,7 @@ function expectedException(actual, expected, msg) {
439
448
if ( expected instanceof Error ) {
440
449
keys . push ( 'name' , 'message' ) ;
441
450
}
451
+ if ( isDeepEqual === undefined ) lazyLoadComparison ( ) ;
442
452
for ( const key of keys ) {
443
453
if ( typeof actual [ key ] === 'string' &&
444
454
isRegExp ( expected [ key ] ) &&
0 commit comments