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 ,
@@ -36,6 +32,15 @@ const { inspect, types: { isPromise, isRegExp } } = require('util');
3632const { EOL } = require ( 'internal/constants' ) ;
3733const { 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.
286291assert . 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.
299305assert . 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
312319assert . 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
324332assert . notDeepStrictEqual = notDeepStrictEqual ;
325333function 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 ] ) &&
0 commit comments