1
1
'use strict' ;
2
2
3
- const common = require ( '../common' ) ;
3
+ require ( '../common' ) ;
4
4
const assert = require ( 'assert' ) ;
5
5
const util = require ( 'util' ) ;
6
6
const { AssertionError } = assert ;
@@ -16,18 +16,23 @@ if (process.stdout.isTTY)
16
16
// Template tag function turning an error message into a RegExp
17
17
// for assert.throws()
18
18
function re ( literals , ...values ) {
19
- let result = literals [ 0 ] ;
20
- const escapeRE = / [ \\ ^ $ . * + ? ( ) [ \] { } | = ! < > : - ] / g;
19
+ let result = 'Expected inputs to be loosely deep-equal:\n\n' ;
21
20
for ( const [ i , value ] of values . entries ( ) ) {
22
- const str = util . inspect ( value ) ;
21
+ const str = util . inspect ( value , {
22
+ compact : false ,
23
+ depth : 1000 ,
24
+ customInspect : false ,
25
+ maxArrayLength : Infinity ,
26
+ breakLength : Infinity
27
+ } ) ;
23
28
// Need to escape special characters.
24
- result += str . replace ( escapeRE , '\\$&' ) ;
29
+ result += str ;
25
30
result += literals [ i + 1 ] ;
26
31
}
27
- return common . expectsError ( {
32
+ return {
28
33
code : 'ERR_ASSERTION' ,
29
- message : new RegExp ( `^ ${ result } $` )
30
- } ) ;
34
+ message : result
35
+ } ;
31
36
}
32
37
33
38
// The following deepEqual tests might seem very weird.
@@ -173,13 +178,6 @@ assert.throws(
173
178
}
174
179
}
175
180
176
- common . expectsError ( ( ) => {
177
- assert . deepEqual ( new Set ( [ { a : 0 } ] ) , new Set ( [ { a : 1 } ] ) ) ;
178
- } , {
179
- code : 'ERR_ASSERTION' ,
180
- message : / ^ S e t { { a : 0 } } d e e p E q u a l S e t { { a : 1 } } $ /
181
- } ) ;
182
-
183
181
function assertDeepAndStrictEqual ( a , b ) {
184
182
assert . deepEqual ( a , b ) ;
185
183
assert . deepStrictEqual ( a , b ) ;
@@ -189,13 +187,19 @@ function assertDeepAndStrictEqual(a, b) {
189
187
}
190
188
191
189
function assertNotDeepOrStrict ( a , b , err ) {
192
- assert . throws ( ( ) => assert . deepEqual ( a , b ) , err || re `${ a } deepEqual ${ b } ` ) ;
190
+ assert . throws (
191
+ ( ) => assert . deepEqual ( a , b ) ,
192
+ err || re `${ a } \n\nshould equal\n\n${ b } `
193
+ ) ;
193
194
assert . throws (
194
195
( ) => assert . deepStrictEqual ( a , b ) ,
195
196
err || { code : 'ERR_ASSERTION' }
196
197
) ;
197
198
198
- assert . throws ( ( ) => assert . deepEqual ( b , a ) , err || re `${ b } deepEqual ${ a } ` ) ;
199
+ assert . throws (
200
+ ( ) => assert . deepEqual ( b , a ) ,
201
+ err || re `${ b } \n\nshould equal\n\n${ a } `
202
+ ) ;
199
203
assert . throws (
200
204
( ) => assert . deepStrictEqual ( b , a ) ,
201
205
err || { code : 'ERR_ASSERTION' }
@@ -225,6 +229,7 @@ assertNotDeepOrStrict(new Set([1, 2, 3]), new Set([1, 2, 3, 4]));
225
229
assertNotDeepOrStrict ( new Set ( [ 1 , 2 , 3 , 4 ] ) , new Set ( [ 1 , 2 , 3 ] ) ) ;
226
230
assertDeepAndStrictEqual ( new Set ( [ '1' , '2' , '3' ] ) , new Set ( [ '1' , '2' , '3' ] ) ) ;
227
231
assertDeepAndStrictEqual ( new Set ( [ [ 1 , 2 ] , [ 3 , 4 ] ] ) , new Set ( [ [ 3 , 4 ] , [ 1 , 2 ] ] ) ) ;
232
+ assertNotDeepOrStrict ( new Set ( [ { a : 0 } ] ) , new Set ( [ { a : 1 } ] ) ) ;
228
233
229
234
{
230
235
const a = [ 1 , 2 ] ;
@@ -626,41 +631,16 @@ assert.throws(
626
631
627
632
assert . notDeepEqual ( new Date ( ) , new Date ( 2000 , 3 , 14 ) ) ;
628
633
629
- assert . deepEqual ( / a / , / a / ) ;
630
- assert . deepEqual ( / a / g, / a / g) ;
631
- assert . deepEqual ( / a / i, / a / i) ;
632
- assert . deepEqual ( / a / m, / a / m) ;
633
- assert . deepEqual ( / a / igm, / a / igm) ;
634
- assert . throws ( ( ) => assert . deepEqual ( / a b / , / a / ) ,
635
- {
636
- code : 'ERR_ASSERTION' ,
637
- name : 'AssertionError [ERR_ASSERTION]' ,
638
- message : '/ab/ deepEqual /a/'
639
- } ) ;
640
- assert . throws ( ( ) => assert . deepEqual ( / a / g, / a / ) ,
641
- {
642
- code : 'ERR_ASSERTION' ,
643
- name : 'AssertionError [ERR_ASSERTION]' ,
644
- message : '/a/g deepEqual /a/'
645
- } ) ;
646
- assert . throws ( ( ) => assert . deepEqual ( / a / i, / a / ) ,
647
- {
648
- code : 'ERR_ASSERTION' ,
649
- name : 'AssertionError [ERR_ASSERTION]' ,
650
- message : '/a/i deepEqual /a/'
651
- } ) ;
652
- assert . throws ( ( ) => assert . deepEqual ( / a / m, / a / ) ,
653
- {
654
- code : 'ERR_ASSERTION' ,
655
- name : 'AssertionError [ERR_ASSERTION]' ,
656
- message : '/a/m deepEqual /a/'
657
- } ) ;
658
- assert . throws ( ( ) => assert . deepEqual ( / a / igm, / a / im) ,
659
- {
660
- code : 'ERR_ASSERTION' ,
661
- name : 'AssertionError [ERR_ASSERTION]' ,
662
- message : '/a/gim deepEqual /a/im'
663
- } ) ;
634
+ assertDeepAndStrictEqual ( / a / , / a / ) ;
635
+ assertDeepAndStrictEqual ( / a / g, / a / g) ;
636
+ assertDeepAndStrictEqual ( / a / i, / a / i) ;
637
+ assertDeepAndStrictEqual ( / a / m, / a / m) ;
638
+ assertDeepAndStrictEqual ( / a / igm, / a / igm) ;
639
+ assertNotDeepOrStrict ( / a b / , / a / ) ;
640
+ assertNotDeepOrStrict ( / a / g, / a / ) ;
641
+ assertNotDeepOrStrict ( / a / i, / a / ) ;
642
+ assertNotDeepOrStrict ( / a / m, / a / ) ;
643
+ assertNotDeepOrStrict ( / a / igm, / a / im) ;
664
644
665
645
{
666
646
const re1 = / a / g;
@@ -720,23 +700,32 @@ nameBuilder2.prototype = Object;
720
700
nb2 = new nameBuilder2 ( 'Ryan' , 'Dahl' ) ;
721
701
assert . deepEqual ( nb1 , nb2 ) ;
722
702
723
- // Primitives and object.
724
- assert . throws ( ( ) => assert . deepEqual ( null , { } ) , AssertionError ) ;
725
- assert . throws ( ( ) => assert . deepEqual ( undefined , { } ) , AssertionError ) ;
726
- assert . throws ( ( ) => assert . deepEqual ( 'a' , [ 'a' ] ) , AssertionError ) ;
727
- assert . throws ( ( ) => assert . deepEqual ( 'a' , { 0 : 'a' } ) , AssertionError ) ;
728
- assert . throws ( ( ) => assert . deepEqual ( 1 , { } ) , AssertionError ) ;
729
- assert . throws ( ( ) => assert . deepEqual ( true , { } ) , AssertionError ) ;
730
- assert . throws ( ( ) => assert . deepEqual ( Symbol ( ) , { } ) , AssertionError ) ;
703
+ // Primitives
704
+ assertNotDeepOrStrict ( null , { } ) ;
705
+ assertNotDeepOrStrict ( undefined , { } ) ;
706
+ assertNotDeepOrStrict ( 'a' , [ 'a' ] ) ;
707
+ assertNotDeepOrStrict ( 'a' , { 0 : 'a' } ) ;
708
+ assertNotDeepOrStrict ( 1 , { } ) ;
709
+ assertNotDeepOrStrict ( true , { } ) ;
710
+ assertNotDeepOrStrict ( Symbol ( ) , { } ) ;
711
+ assertNotDeepOrStrict ( Symbol ( ) , Symbol ( ) ) ;
712
+
713
+ assertOnlyDeepEqual ( 4 , '4' ) ;
714
+ assertOnlyDeepEqual ( true , 1 ) ;
715
+
716
+ {
717
+ const s = Symbol ( ) ;
718
+ assertDeepAndStrictEqual ( s , s ) ;
719
+ }
731
720
732
721
// Primitive wrappers and object.
733
- assert . deepEqual ( new String ( 'a' ) , [ 'a' ] ) ;
734
- assert . deepEqual ( new String ( 'a' ) , { 0 : 'a' } ) ;
735
- assert . deepEqual ( new Number ( 1 ) , { } ) ;
736
- assert . deepEqual ( new Boolean ( true ) , { } ) ;
722
+ assertOnlyDeepEqual ( new String ( 'a' ) , [ 'a' ] ) ;
723
+ assertOnlyDeepEqual ( new String ( 'a' ) , { 0 : 'a' } ) ;
724
+ assertOnlyDeepEqual ( new Number ( 1 ) , { } ) ;
725
+ assertOnlyDeepEqual ( new Boolean ( true ) , { } ) ;
737
726
738
727
// Same number of keys but different key names.
739
- assert . throws ( ( ) => assert . deepEqual ( { a : 1 } , { b : 1 } ) , AssertionError ) ;
728
+ assertNotDeepOrStrict ( { a : 1 } , { b : 1 } ) ;
740
729
741
730
assert . deepStrictEqual ( new Date ( 2000 , 3 , 14 ) , new Date ( 2000 , 3 , 14 ) ) ;
742
731
@@ -757,11 +746,6 @@ assert.throws(
757
746
758
747
assert . notDeepStrictEqual ( new Date ( ) , new Date ( 2000 , 3 , 14 ) ) ;
759
748
760
- assert . deepStrictEqual ( / a / , / a / ) ;
761
- assert . deepStrictEqual ( / a / g, / a / g) ;
762
- assert . deepStrictEqual ( / a / i, / a / i) ;
763
- assert . deepStrictEqual ( / a / m, / a / m) ;
764
- assert . deepStrictEqual ( / a / igm, / a / igm) ;
765
749
assert . throws (
766
750
( ) => assert . deepStrictEqual ( / a b / , / a / ) ,
767
751
{
@@ -871,33 +855,6 @@ obj2 = new Constructor2('Ryan', 'Dahl');
871
855
872
856
assert . deepStrictEqual ( obj1 , obj2 ) ;
873
857
874
- // primitives
875
- assert . throws ( ( ) => assert . deepStrictEqual ( 4 , '4' ) , AssertionError ) ;
876
- assert . throws ( ( ) => assert . deepStrictEqual ( true , 1 ) , AssertionError ) ;
877
- assert . throws ( ( ) => assert . deepStrictEqual ( Symbol ( ) , Symbol ( ) ) ,
878
- AssertionError ) ;
879
-
880
- const s = Symbol ( ) ;
881
- assert . deepStrictEqual ( s , s ) ;
882
-
883
- // Primitives and object.
884
- assert . throws ( ( ) => assert . deepStrictEqual ( null , { } ) , AssertionError ) ;
885
- assert . throws ( ( ) => assert . deepStrictEqual ( undefined , { } ) , AssertionError ) ;
886
- assert . throws ( ( ) => assert . deepStrictEqual ( 'a' , [ 'a' ] ) , AssertionError ) ;
887
- assert . throws ( ( ) => assert . deepStrictEqual ( 'a' , { 0 : 'a' } ) , AssertionError ) ;
888
- assert . throws ( ( ) => assert . deepStrictEqual ( 1 , { } ) , AssertionError ) ;
889
- assert . throws ( ( ) => assert . deepStrictEqual ( true , { } ) , AssertionError ) ;
890
- assert . throws ( ( ) => assert . deepStrictEqual ( Symbol ( ) , { } ) , AssertionError ) ;
891
-
892
- // Primitive wrappers and object.
893
- assert . throws ( ( ) => assert . deepStrictEqual ( new String ( 'a' ) , [ 'a' ] ) ,
894
- AssertionError ) ;
895
- assert . throws ( ( ) => assert . deepStrictEqual ( new String ( 'a' ) , { 0 : 'a' } ) ,
896
- AssertionError ) ;
897
- assert . throws ( ( ) => assert . deepStrictEqual ( new Number ( 1 ) , { } ) , AssertionError ) ;
898
- assert . throws ( ( ) => assert . deepStrictEqual ( new Boolean ( true ) , { } ) ,
899
- AssertionError ) ;
900
-
901
858
// Check extra properties on errors.
902
859
{
903
860
const a = new TypeError ( 'foo' ) ;
0 commit comments