@@ -38,22 +38,26 @@ const assert = module.exports = ok;
38
38
// both the actual and expected values to the assertion error for
39
39
// display purposes.
40
40
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 ) ;
49
43
}
50
44
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 ) {
53
49
message = actual ;
54
- if ( arguments . length === 2 )
50
+ } else if ( argsLen === 2 ) {
55
51
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
+ } ) ;
57
61
}
58
62
assert . fail = fail ;
59
63
@@ -67,37 +71,71 @@ assert.AssertionError = errors.AssertionError;
67
71
// Pure assertion tests whether a value is truthy, as determined
68
72
// by !!value.
69
73
function 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
+ }
71
83
}
72
84
assert . ok = ok ;
73
85
74
86
// The equality assertion tests shallow, coercive equality with ==.
75
87
/* eslint-disable no-restricted-properties */
76
88
assert . equal = function equal ( actual , expected , message ) {
77
89
// 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
+ }
79
99
} ;
80
100
81
101
// The non-equality assertion tests for whether two objects are not
82
102
// equal with !=.
83
103
assert . notEqual = function notEqual ( actual , expected , message ) {
84
104
// eslint-disable-next-line eqeqeq
85
105
if ( actual == expected ) {
86
- innerFail ( actual , expected , message , '!=' , notEqual ) ;
106
+ innerFail ( {
107
+ actual,
108
+ expected,
109
+ message,
110
+ operator : '!=' ,
111
+ stackStartFn : notEqual
112
+ } ) ;
87
113
}
88
114
} ;
89
115
90
116
// The equivalence assertion tests a deep equality relation.
91
117
assert . deepEqual = function deepEqual ( actual , expected , message ) {
92
118
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
+ } ) ;
94
126
}
95
127
} ;
96
128
/* eslint-enable */
97
129
98
130
assert . deepStrictEqual = function deepStrictEqual ( actual , expected , message ) {
99
131
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
+ } ) ;
101
139
}
102
140
} ;
103
141
@@ -572,30 +610,53 @@ function objEquiv(a, b, strict, keys, memos) {
572
610
// The non-equivalence assertion tests for any deep inequality.
573
611
assert . notDeepEqual = function notDeepEqual ( actual , expected , message ) {
574
612
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
+ } ) ;
576
620
}
577
621
} ;
578
622
579
623
assert . notDeepStrictEqual = notDeepStrictEqual ;
580
624
function notDeepStrictEqual ( actual , expected , message ) {
581
625
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
+ } ) ;
584
633
}
585
634
}
586
635
587
636
// The strict equality assertion tests strict equality, as determined by ===.
588
637
assert . strictEqual = function strictEqual ( actual , expected , message ) {
589
638
if ( actual !== expected ) {
590
- innerFail ( actual , expected , message , '===' , strictEqual ) ;
639
+ innerFail ( {
640
+ actual,
641
+ expected,
642
+ message,
643
+ operator : '===' ,
644
+ stackStartFn : strictEqual
645
+ } ) ;
591
646
}
592
647
} ;
593
648
594
649
// The strict non-equality assertion tests for strict inequality, as
595
650
// determined by !==.
596
651
assert . notStrictEqual = function notStrictEqual ( actual , expected , message ) {
597
652
if ( actual === expected ) {
598
- innerFail ( actual , expected , message , '!==' , notStrictEqual ) ;
653
+ innerFail ( {
654
+ actual,
655
+ expected,
656
+ message,
657
+ operator : '!==' ,
658
+ stackStartFn : notStrictEqual
659
+ } ) ;
599
660
}
600
661
} ;
601
662
@@ -643,18 +704,27 @@ function innerThrows(shouldThrow, block, expected, message) {
643
704
details += ` (${ expected . name } )` ;
644
705
}
645
706
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
+ } ) ;
647
714
}
648
715
if ( expected && expectedException ( actual , expected ) === false ) {
649
716
throw actual ;
650
717
}
651
718
} else if ( actual !== undefined ) {
652
719
if ( ! expected || expectedException ( actual , expected ) ) {
653
720
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
+ } ) ;
658
728
}
659
729
throw actual ;
660
730
}
0 commit comments