@@ -36,19 +36,13 @@ const assert = module.exports = ok;
3636// both the actual and expected values to the assertion error for
3737// display purposes.
3838
39- function innerFail ( actual , expected , message , operator , stackStartFunction ) {
40- if ( message instanceof Error ) throw message ;
39+ function innerFail ( obj ) {
40+ if ( obj . message instanceof Error ) throw obj . message ;
4141
42- throw new errors . AssertionError ( {
43- message,
44- actual,
45- expected,
46- operator,
47- stackStartFunction
48- } ) ;
42+ throw new errors . AssertionError ( obj ) ;
4943}
5044
51- function fail ( actual , expected , message , operator , stackStartFunction ) {
45+ function fail ( actual , expected , message , operator , stackStartFn ) {
5246 const argsLen = arguments . length ;
5347
5448 if ( argsLen === 0 ) {
@@ -60,7 +54,13 @@ function fail(actual, expected, message, operator, stackStartFunction) {
6054 operator = '!=' ;
6155 }
6256
63- innerFail ( actual , expected , message , operator , stackStartFunction || fail ) ;
57+ innerFail ( {
58+ actual,
59+ expected,
60+ message,
61+ operator,
62+ stackStartFn : stackStartFn || fail
63+ } ) ;
6464}
6565
6666assert . fail = fail ;
@@ -75,67 +75,124 @@ assert.AssertionError = errors.AssertionError;
7575// Pure assertion tests whether a value is truthy, as determined
7676// by !!value.
7777function ok ( value , message ) {
78- if ( ! value ) innerFail ( value , true , message , '==' , ok ) ;
78+ if ( ! value ) {
79+ innerFail ( {
80+ actual : value ,
81+ expected : true ,
82+ message,
83+ operator : '==' ,
84+ stackStartFn : ok
85+ } ) ;
86+ }
7987}
8088assert . ok = ok ;
8189
8290// The equality assertion tests shallow, coercive equality with ==.
8391/* eslint-disable no-restricted-properties */
8492assert . equal = function equal ( actual , expected , message ) {
8593 // eslint-disable-next-line eqeqeq
86- if ( actual != expected ) innerFail ( actual , expected , message , '==' , equal ) ;
94+ if ( actual != expected ) {
95+ innerFail ( {
96+ actual,
97+ expected,
98+ message,
99+ operator : '==' ,
100+ stackStartFn : equal
101+ } ) ;
102+ }
87103} ;
88104
89105// The non-equality assertion tests for whether two objects are not
90106// equal with !=.
91107assert . notEqual = function notEqual ( actual , expected , message ) {
92108 // eslint-disable-next-line eqeqeq
93109 if ( actual == expected ) {
94- innerFail ( actual , expected , message , '!=' , notEqual ) ;
110+ innerFail ( {
111+ actual,
112+ expected,
113+ message,
114+ operator : '!=' ,
115+ stackStartFn : notEqual
116+ } ) ;
95117 }
96118} ;
97119
98120// The equivalence assertion tests a deep equality relation.
99121assert . deepEqual = function deepEqual ( actual , expected , message ) {
100122 if ( ! isDeepEqual ( actual , expected ) ) {
101- innerFail ( actual , expected , message , 'deepEqual' , deepEqual ) ;
123+ innerFail ( {
124+ actual,
125+ expected,
126+ message,
127+ operator : 'deepEqual' ,
128+ stackStartFn : deepEqual
129+ } ) ;
102130 }
103131} ;
104132
105133// The non-equivalence assertion tests for any deep inequality.
106134assert . notDeepEqual = function notDeepEqual ( actual , expected , message ) {
107135 if ( isDeepEqual ( actual , expected ) ) {
108- innerFail ( actual , expected , message , 'notDeepEqual' , notDeepEqual ) ;
136+ innerFail ( {
137+ actual,
138+ expected,
139+ message,
140+ operator : 'notDeepEqual' ,
141+ stackStartFn : notDeepEqual
142+ } ) ;
109143 }
110144} ;
111145/* eslint-enable */
112146
113147assert . deepStrictEqual = function deepStrictEqual ( actual , expected , message ) {
114148 if ( ! isDeepStrictEqual ( actual , expected ) ) {
115- innerFail ( actual , expected , message , 'deepStrictEqual' , deepStrictEqual ) ;
149+ innerFail ( {
150+ actual,
151+ expected,
152+ message,
153+ operator : 'deepStrictEqual' ,
154+ stackStartFn : deepStrictEqual
155+ } ) ;
116156 }
117157} ;
118158
119159assert . notDeepStrictEqual = notDeepStrictEqual ;
120160function notDeepStrictEqual ( actual , expected , message ) {
121161 if ( isDeepStrictEqual ( actual , expected ) ) {
122- innerFail ( actual , expected , message , 'notDeepStrictEqual' ,
123- notDeepStrictEqual ) ;
162+ innerFail ( {
163+ actual,
164+ expected,
165+ message,
166+ operator : 'notDeepStrictEqual' ,
167+ stackStartFn : notDeepStrictEqual
168+ } ) ;
124169 }
125170}
126171
127172// The strict equality assertion tests strict equality, as determined by ===.
128173assert . strictEqual = function strictEqual ( actual , expected , message ) {
129174 if ( actual !== expected ) {
130- innerFail ( actual , expected , message , '===' , strictEqual ) ;
175+ innerFail ( {
176+ actual,
177+ expected,
178+ message,
179+ operator : '===' ,
180+ stackStartFn : strictEqual
181+ } ) ;
131182 }
132183} ;
133184
134185// The strict non-equality assertion tests for strict inequality, as
135186// determined by !==.
136187assert . notStrictEqual = function notStrictEqual ( actual , expected , message ) {
137188 if ( actual === expected ) {
138- innerFail ( actual , expected , message , '!==' , notStrictEqual ) ;
189+ innerFail ( {
190+ actual,
191+ expected,
192+ message,
193+ operator : '!==' ,
194+ stackStartFn : notStrictEqual
195+ } ) ;
139196 }
140197} ;
141198
@@ -183,18 +240,27 @@ function innerThrows(shouldThrow, block, expected, message) {
183240 details += ` (${ expected . name } )` ;
184241 }
185242 details += message ? `: ${ message } ` : '.' ;
186- fail ( actual , expected , `Missing expected exception${ details } ` , 'throws' ) ;
243+ innerFail ( {
244+ actual,
245+ expected,
246+ operator : 'throws' ,
247+ message : `Missing expected exception${ details } ` ,
248+ stackStartFn : innerThrows
249+ } ) ;
187250 }
188251 if ( expected && expectedException ( actual , expected ) === false ) {
189252 throw actual ;
190253 }
191254 } else if ( actual !== undefined ) {
192255 if ( ! expected || expectedException ( actual , expected ) ) {
193256 details = message ? `: ${ message } ` : '.' ;
194- fail ( actual ,
195- expected ,
196- `Got unwanted exception${ details } \n${ actual . message } ` ,
197- 'doesNotThrow' ) ;
257+ innerFail ( {
258+ actual,
259+ expected,
260+ operator : 'doesNotThrow' ,
261+ message : `Got unwanted exception${ details } \n${ actual . message } ` ,
262+ stackStartFn : innerThrows
263+ } ) ;
198264 }
199265 throw actual ;
200266 }
0 commit comments