@@ -35,26 +35,16 @@ var assert = exports;
3535// 2. The AssertionError is defined in assert.
3636// new assert.AssertionError({message: message, actual: actual, expected: expected})
3737
38- assert . AssertionError = function AssertionError ( options ) {
38+ assert . AssertionError = function AssertionError ( options ) {
3939 this . name = "AssertionError" ;
4040 this . message = options . message ;
4141 this . actual = options . actual ;
4242 this . expected = options . expected ;
4343 this . operator = options . operator ;
44+ var stackStartFunction = options . stackStartFunction || fail ;
4445
45- //v8 specific
4646 if ( Error . captureStackTrace ) {
47- Error . captureStackTrace ( this , fail ) ;
48- //node specific, removes the node machinery stack frames
49- if ( typeof ( __filename ) !== undefined ) {
50- var stack = this . stack . split ( '\n' ) ;
51- for ( var i = stack . length - 1 ; i >= 0 ; i -- ) {
52- if ( stack [ i ] . indexOf ( __filename ) != - 1 ) {
53- this . stack = stack . slice ( 0 , i + 2 ) . join ( '\n' ) ;
54- break ;
55- }
56- }
57- }
47+ Error . captureStackTrace ( this , stackStartFunction ) ;
5848 }
5949} ;
6050
@@ -85,12 +75,13 @@ assert.AssertionError.__proto__ = Error.prototype;
8575// both the actual and expected values to the assertion error for
8676// display purposes.
8777
88- function fail ( actual , expected , message , operator ) {
78+ function fail ( actual , expected , message , operator , stackStartFunction ) {
8979 throw new assert . AssertionError ( {
9080 message : message ,
9181 actual : actual ,
9282 expected : expected ,
93- operator : operator
83+ operator : operator ,
84+ stackStartFunction : stackStartFunction
9485 } ) ;
9586}
9687
@@ -105,30 +96,32 @@ assert.fail = fail;
10596// assert.strictEqual(true, guard, message_opt);.
10697
10798assert . ok = function ok ( value , message ) {
108- if ( ! ! ! value ) fail ( value , true , message , "==" ) ;
99+ if ( ! ! ! value ) fail ( value , true , message , "==" , assert . ok ) ;
109100} ;
110101
111102// 5. The equality assertion tests shallow, coercive equality with
112103// ==.
113104// assert.equal(actual, expected, message_opt);
114105
115106assert . equal = function equal ( actual , expected , message ) {
116- if ( actual != expected ) fail ( actual , expected , message , "==" ) ;
107+ if ( actual != expected ) fail ( actual , expected , message , "==" , assert . equal ) ;
117108} ;
118109
119110// 6. The non-equality assertion tests for whether two objects are not equal
120111// with != assert.notEqual(actual, expected, message_opt);
121112
122113assert . notEqual = function notEqual ( actual , expected , message ) {
123- if ( actual == expected ) fail ( actual , expected , message , "!=" ) ;
114+ if ( actual == expected ) {
115+ fail ( actual , expected , message , "!=" , assert . notEqual ) ;
116+ }
124117} ;
125118
126119// 7. The equivalence assertion tests a deep equality relation.
127120// assert.deepEqual(actual, expected, message_opt);
128121
129- exports . deepEqual = function deepEqual ( actual , expected , message ) {
122+ assert . deepEqual = function deepEqual ( actual , expected , message ) {
130123 if ( ! _deepEqual ( actual , expected ) ) {
131- fail ( actual , expected , message , "deepEqual" ) ;
124+ fail ( actual , expected , message , "deepEqual" , assert . deepEqual ) ;
132125 }
133126} ;
134127
@@ -212,24 +205,28 @@ function objEquiv (a, b) {
212205// 8. The non-equivalence assertion tests for any deep inequality.
213206// assert.notDeepEqual(actual, expected, message_opt);
214207
215- exports . notDeepEqual = function notDeepEqual ( actual , expected , message ) {
208+ assert . notDeepEqual = function notDeepEqual ( actual , expected , message ) {
216209 if ( _deepEqual ( actual , expected ) ) {
217- fail ( actual , expected , message , "notDeepEqual" ) ;
210+ fail ( actual , expected , message , "notDeepEqual" , assert . notDeepEqual ) ;
218211 }
219212} ;
220213
221214// 9. The strict equality assertion tests strict equality, as determined by ===.
222215// assert.strictEqual(actual, expected, message_opt);
223216
224217assert . strictEqual = function strictEqual ( actual , expected , message ) {
225- if ( actual !== expected ) fail ( actual , expected , message , "===" ) ;
218+ if ( actual !== expected ) {
219+ fail ( actual , expected , message , "===" , assert . strictEqual ) ;
220+ }
226221} ;
227222
228223// 10. The strict non-equality assertion tests for strict inequality, as determined by !==.
229224// assert.notStrictEqual(actual, expected, message_opt);
230225
231226assert . notStrictEqual = function notStrictEqual ( actual , expected , message ) {
232- if ( actual === expected ) fail ( actual , expected , message , "!==" ) ;
227+ if ( actual === expected ) {
228+ fail ( actual , expected , message , "!==" , assert . notStrictEqual ) ;
229+ }
233230} ;
234231
235232function _throws ( shouldThrow , block , err , message ) {
@@ -285,3 +282,4 @@ assert.throws = function(block, /*optional*/error, /*optional*/message) {
285282assert . doesNotThrow = function ( block , /*optional*/ error , /*optional*/ message ) {
286283 _throws . apply ( this , [ false ] . concat ( pSlice . call ( arguments ) ) ) ;
287284} ;
285+
0 commit comments