@@ -38,22 +38,26 @@ const assert = module.exports = ok;
3838// both the actual and expected values to the assertion error for
3939// display purposes.
4040
41- function innerFail ( actual , expected , message , operator , stackStartFunction ) {
42- throw new errors . AssertionError ( {
43- message,
44- actual,
45- expected,
46- operator,
47- stackStartFunction
48- } ) ;
41+ function innerFail ( obj ) {
42+ throw new errors . AssertionError ( obj ) ;
4943}
5044
51- function fail ( actual , expected , message , operator , stackStartFunction ) {
52- if ( arguments . length === 1 )
45+ function fail ( actual , expected , message , operator , stackStartFn ) {
46+ const argsLen = arguments . length ;
47+
48+ if ( argsLen === 1 ) {
5349 message = actual ;
54- if ( arguments . length === 2 )
50+ } else if ( argsLen === 2 ) {
5551 operator = '!=' ;
56- innerFail ( actual , expected , message , operator , stackStartFunction || fail ) ;
52+ }
53+
54+ innerFail ( {
55+ actual,
56+ expected,
57+ message,
58+ operator,
59+ stackStartFn : stackStartFn || fail
60+ } ) ;
5761}
5862assert . fail = fail ;
5963
@@ -67,37 +71,71 @@ assert.AssertionError = errors.AssertionError;
6771// Pure assertion tests whether a value is truthy, as determined
6872// by !!value.
6973function ok ( value , message ) {
70- if ( ! value ) innerFail ( value , true , message , '==' , ok ) ;
74+ if ( ! value ) {
75+ innerFail ( {
76+ actual : value ,
77+ expected : true ,
78+ message,
79+ operator : '==' ,
80+ stackStartFn : ok
81+ } ) ;
82+ }
7183}
7284assert . ok = ok ;
7385
7486// The equality assertion tests shallow, coercive equality with ==.
7587/* eslint-disable no-restricted-properties */
7688assert . equal = function equal ( actual , expected , message ) {
7789 // eslint-disable-next-line eqeqeq
78- if ( actual != expected ) innerFail ( actual , expected , message , '==' , equal ) ;
90+ if ( actual != expected ) {
91+ innerFail ( {
92+ actual,
93+ expected,
94+ message,
95+ operator : '==' ,
96+ stackStartFn : equal
97+ } ) ;
98+ }
7999} ;
80100
81101// The non-equality assertion tests for whether two objects are not
82102// equal with !=.
83103assert . notEqual = function notEqual ( actual , expected , message ) {
84104 // eslint-disable-next-line eqeqeq
85105 if ( actual == expected ) {
86- innerFail ( actual , expected , message , '!=' , notEqual ) ;
106+ innerFail ( {
107+ actual,
108+ expected,
109+ message,
110+ operator : '!=' ,
111+ stackStartFn : notEqual
112+ } ) ;
87113 }
88114} ;
89115
90116// The equivalence assertion tests a deep equality relation.
91117assert . deepEqual = function deepEqual ( actual , expected , message ) {
92118 if ( ! innerDeepEqual ( actual , expected , false ) ) {
93- innerFail ( actual , expected , message , 'deepEqual' , deepEqual ) ;
119+ innerFail ( {
120+ actual,
121+ expected,
122+ message,
123+ operator : 'deepEqual' ,
124+ stackStartFn : deepEqual
125+ } ) ;
94126 }
95127} ;
96128/* eslint-enable */
97129
98130assert . deepStrictEqual = function deepStrictEqual ( actual , expected , message ) {
99131 if ( ! innerDeepEqual ( actual , expected , true ) ) {
100- innerFail ( actual , expected , message , 'deepStrictEqual' , deepStrictEqual ) ;
132+ innerFail ( {
133+ actual,
134+ expected,
135+ message,
136+ operator : 'deepStrictEqual' ,
137+ stackStartFn : deepStrictEqual
138+ } ) ;
101139 }
102140} ;
103141
@@ -572,30 +610,53 @@ function objEquiv(a, b, strict, keys, memos) {
572610// The non-equivalence assertion tests for any deep inequality.
573611assert . notDeepEqual = function notDeepEqual ( actual , expected , message ) {
574612 if ( innerDeepEqual ( actual , expected , false ) ) {
575- innerFail ( actual , expected , message , 'notDeepEqual' , notDeepEqual ) ;
613+ innerFail ( {
614+ actual,
615+ expected,
616+ message,
617+ operator : 'notDeepEqual' ,
618+ stackStartFn : notDeepEqual
619+ } ) ;
576620 }
577621} ;
578622
579623assert . notDeepStrictEqual = notDeepStrictEqual ;
580624function notDeepStrictEqual ( actual , expected , message ) {
581625 if ( innerDeepEqual ( actual , expected , true ) ) {
582- innerFail ( actual , expected , message , 'notDeepStrictEqual' ,
583- notDeepStrictEqual ) ;
626+ innerFail ( {
627+ actual,
628+ expected,
629+ message,
630+ operator : 'notDeepStrictEqual' ,
631+ stackStartFn : notDeepStrictEqual
632+ } ) ;
584633 }
585634}
586635
587636// The strict equality assertion tests strict equality, as determined by ===.
588637assert . strictEqual = function strictEqual ( actual , expected , message ) {
589638 if ( actual !== expected ) {
590- innerFail ( actual , expected , message , '===' , strictEqual ) ;
639+ innerFail ( {
640+ actual,
641+ expected,
642+ message,
643+ operator : '===' ,
644+ stackStartFn : strictEqual
645+ } ) ;
591646 }
592647} ;
593648
594649// The strict non-equality assertion tests for strict inequality, as
595650// determined by !==.
596651assert . notStrictEqual = function notStrictEqual ( actual , expected , message ) {
597652 if ( actual === expected ) {
598- innerFail ( actual , expected , message , '!==' , notStrictEqual ) ;
653+ innerFail ( {
654+ actual,
655+ expected,
656+ message,
657+ operator : '!==' ,
658+ stackStartFn : notStrictEqual
659+ } ) ;
599660 }
600661} ;
601662
@@ -643,18 +704,27 @@ function innerThrows(shouldThrow, block, expected, message) {
643704 details += ` (${ expected . name } )` ;
644705 }
645706 details += message ? `: ${ message } ` : '.' ;
646- fail ( actual , expected , `Missing expected exception${ details } ` , 'throws' ) ;
707+ innerFail ( {
708+ actual,
709+ expected,
710+ operator : 'throws' ,
711+ message : `Missing expected exception${ details } ` ,
712+ stackStartFn : innerThrows
713+ } ) ;
647714 }
648715 if ( expected && expectedException ( actual , expected ) === false ) {
649716 throw actual ;
650717 }
651718 } else if ( actual !== undefined ) {
652719 if ( ! expected || expectedException ( actual , expected ) ) {
653720 details = message ? `: ${ message } ` : '.' ;
654- fail ( actual ,
655- expected ,
656- `Got unwanted exception${ details } ` ,
657- 'doesNotThrow' ) ;
721+ innerFail ( {
722+ actual,
723+ expected,
724+ operator : 'doesNotThrow' ,
725+ message : `Got unwanted exception${ details } ` ,
726+ stackStartFn : innerThrows
727+ } ) ;
658728 }
659729 throw actual ;
660730 }
0 commit comments