2121'use strict' ;
2222
2323const { Buffer } = require ( 'buffer' ) ;
24- const {
25- isDeepEqual,
26- isDeepStrictEqual
27- } = require ( 'internal/util/comparisons' ) ;
2824const { codes : {
2925 ERR_AMBIGUOUS_ARGUMENT ,
3026 ERR_INVALID_ARG_TYPE ,
@@ -37,6 +33,15 @@ const { inspect, types: { isPromise, isRegExp } } = require('util');
3733const { EOL } = require ( 'internal/constants' ) ;
3834const { NativeModule } = require ( 'internal/bootstrap/loaders' ) ;
3935
36+ let isDeepEqual ;
37+ let isDeepStrictEqual ;
38+
39+ function lazyLoadComparison ( ) {
40+ const comparison = require ( 'internal/util/comparisons' ) ;
41+ isDeepEqual = comparison . isDeepEqual ;
42+ isDeepStrictEqual = comparison . isDeepStrictEqual ;
43+ }
44+
4045// Escape control characters but not \n and \t to keep the line breaks and
4146// indentation intact.
4247// eslint-disable-next-line no-control-regex
@@ -285,6 +290,7 @@ assert.notEqual = function notEqual(actual, expected, message) {
285290
286291// The equivalence assertion tests a deep equality relation.
287292assert . deepEqual = function deepEqual ( actual , expected , message ) {
293+ if ( isDeepEqual === undefined ) lazyLoadComparison ( ) ;
288294 if ( ! isDeepEqual ( actual , expected ) ) {
289295 innerFail ( {
290296 actual,
@@ -298,6 +304,7 @@ assert.deepEqual = function deepEqual(actual, expected, message) {
298304
299305// The non-equivalence assertion tests for any deep inequality.
300306assert . notDeepEqual = function notDeepEqual ( actual , expected , message ) {
307+ if ( isDeepEqual === undefined ) lazyLoadComparison ( ) ;
301308 if ( isDeepEqual ( actual , expected ) ) {
302309 innerFail ( {
303310 actual,
@@ -311,6 +318,7 @@ assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
311318/* eslint-enable */
312319
313320assert . deepStrictEqual = function deepStrictEqual ( actual , expected , message ) {
321+ if ( isDeepEqual === undefined ) lazyLoadComparison ( ) ;
314322 if ( ! isDeepStrictEqual ( actual , expected ) ) {
315323 innerFail ( {
316324 actual,
@@ -324,6 +332,7 @@ assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
324332
325333assert . notDeepStrictEqual = notDeepStrictEqual ;
326334function notDeepStrictEqual ( actual , expected , message ) {
335+ if ( isDeepEqual === undefined ) lazyLoadComparison ( ) ;
327336 if ( isDeepStrictEqual ( actual , expected ) ) {
328337 innerFail ( {
329338 actual,
@@ -437,6 +446,7 @@ function expectedException(actual, expected, msg) {
437446 throw new ERR_INVALID_ARG_VALUE ( 'error' ,
438447 expected , 'may not be an empty object' ) ;
439448 }
449+ if ( isDeepEqual === undefined ) lazyLoadComparison ( ) ;
440450 for ( const key of keys ) {
441451 if ( typeof actual [ key ] === 'string' &&
442452 isRegExp ( expected [ key ] ) &&
0 commit comments