11'use strict' ;
22
3- const common = require ( '../common' ) ;
3+ require ( '../common' ) ;
44const assert = require ( 'assert' ) ;
55const util = require ( 'util' ) ;
66const { AssertionError } = assert ;
@@ -16,18 +16,23 @@ if (process.stdout.isTTY)
1616// Template tag function turning an error message into a RegExp
1717// for assert.throws()
1818function re ( literals , ...values ) {
19- let result = literals [ 0 ] ;
20- const escapeRE = / [ \\ ^ $ . * + ? ( ) [ \] { } | = ! < > : - ] / g;
19+ let result = 'Expected inputs to be loosely deep-equal:\n\n' ;
2120 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+ } ) ;
2328 // Need to escape special characters.
24- result += str . replace ( escapeRE , '\\$&' ) ;
29+ result += str ;
2530 result += literals [ i + 1 ] ;
2631 }
27- return common . expectsError ( {
32+ return {
2833 code : 'ERR_ASSERTION' ,
29- message : new RegExp ( `^ ${ result } $` )
30- } ) ;
34+ message : result
35+ } ;
3136}
3237
3338// The following deepEqual tests might seem very weird.
@@ -173,13 +178,6 @@ assert.throws(
173178 }
174179}
175180
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-
183181function assertDeepAndStrictEqual ( a , b ) {
184182 assert . deepEqual ( a , b ) ;
185183 assert . deepStrictEqual ( a , b ) ;
@@ -189,13 +187,19 @@ function assertDeepAndStrictEqual(a, b) {
189187}
190188
191189function 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+ ) ;
193194 assert . throws (
194195 ( ) => assert . deepStrictEqual ( a , b ) ,
195196 err || { code : 'ERR_ASSERTION' }
196197 ) ;
197198
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+ ) ;
199203 assert . throws (
200204 ( ) => assert . deepStrictEqual ( b , a ) ,
201205 err || { code : 'ERR_ASSERTION' }
@@ -225,6 +229,7 @@ assertNotDeepOrStrict(new Set([1, 2, 3]), new Set([1, 2, 3, 4]));
225229assertNotDeepOrStrict ( new Set ( [ 1 , 2 , 3 , 4 ] ) , new Set ( [ 1 , 2 , 3 ] ) ) ;
226230assertDeepAndStrictEqual ( new Set ( [ '1' , '2' , '3' ] ) , new Set ( [ '1' , '2' , '3' ] ) ) ;
227231assertDeepAndStrictEqual ( new Set ( [ [ 1 , 2 ] , [ 3 , 4 ] ] ) , new Set ( [ [ 3 , 4 ] , [ 1 , 2 ] ] ) ) ;
232+ assertNotDeepOrStrict ( new Set ( [ { a : 0 } ] ) , new Set ( [ { a : 1 } ] ) ) ;
228233
229234{
230235 const a = [ 1 , 2 ] ;
@@ -634,41 +639,16 @@ assert.throws(
634639
635640assert . notDeepEqual ( new Date ( ) , new Date ( 2000 , 3 , 14 ) ) ;
636641
637- assert . deepEqual ( / a / , / a / ) ;
638- assert . deepEqual ( / a / g, / a / g) ;
639- assert . deepEqual ( / a / i, / a / i) ;
640- assert . deepEqual ( / a / m, / a / m) ;
641- assert . deepEqual ( / a / igm, / a / igm) ;
642- assert . throws ( ( ) => assert . deepEqual ( / a b / , / a / ) ,
643- {
644- code : 'ERR_ASSERTION' ,
645- name : 'AssertionError [ERR_ASSERTION]' ,
646- message : '/ab/ deepEqual /a/'
647- } ) ;
648- assert . throws ( ( ) => assert . deepEqual ( / a / g, / a / ) ,
649- {
650- code : 'ERR_ASSERTION' ,
651- name : 'AssertionError [ERR_ASSERTION]' ,
652- message : '/a/g deepEqual /a/'
653- } ) ;
654- assert . throws ( ( ) => assert . deepEqual ( / a / i, / a / ) ,
655- {
656- code : 'ERR_ASSERTION' ,
657- name : 'AssertionError [ERR_ASSERTION]' ,
658- message : '/a/i deepEqual /a/'
659- } ) ;
660- assert . throws ( ( ) => assert . deepEqual ( / a / m, / a / ) ,
661- {
662- code : 'ERR_ASSERTION' ,
663- name : 'AssertionError [ERR_ASSERTION]' ,
664- message : '/a/m deepEqual /a/'
665- } ) ;
666- assert . throws ( ( ) => assert . deepEqual ( / a / igm, / a / im) ,
667- {
668- code : 'ERR_ASSERTION' ,
669- name : 'AssertionError [ERR_ASSERTION]' ,
670- message : '/a/gim deepEqual /a/im'
671- } ) ;
642+ assertDeepAndStrictEqual ( / a / , / a / ) ;
643+ assertDeepAndStrictEqual ( / a / g, / a / g) ;
644+ assertDeepAndStrictEqual ( / a / i, / a / i) ;
645+ assertDeepAndStrictEqual ( / a / m, / a / m) ;
646+ assertDeepAndStrictEqual ( / a / igm, / a / igm) ;
647+ assertNotDeepOrStrict ( / a b / , / a / ) ;
648+ assertNotDeepOrStrict ( / a / g, / a / ) ;
649+ assertNotDeepOrStrict ( / a / i, / a / ) ;
650+ assertNotDeepOrStrict ( / a / m, / a / ) ;
651+ assertNotDeepOrStrict ( / a / igm, / a / im) ;
672652
673653{
674654 const re1 = / a / g;
@@ -728,23 +708,32 @@ nameBuilder2.prototype = Object;
728708nb2 = new nameBuilder2 ( 'Ryan' , 'Dahl' ) ;
729709assert . deepEqual ( nb1 , nb2 ) ;
730710
731- // Primitives and object.
732- assert . throws ( ( ) => assert . deepEqual ( null , { } ) , AssertionError ) ;
733- assert . throws ( ( ) => assert . deepEqual ( undefined , { } ) , AssertionError ) ;
734- assert . throws ( ( ) => assert . deepEqual ( 'a' , [ 'a' ] ) , AssertionError ) ;
735- assert . throws ( ( ) => assert . deepEqual ( 'a' , { 0 : 'a' } ) , AssertionError ) ;
736- assert . throws ( ( ) => assert . deepEqual ( 1 , { } ) , AssertionError ) ;
737- assert . throws ( ( ) => assert . deepEqual ( true , { } ) , AssertionError ) ;
738- assert . throws ( ( ) => assert . deepEqual ( Symbol ( ) , { } ) , AssertionError ) ;
711+ // Primitives
712+ assertNotDeepOrStrict ( null , { } ) ;
713+ assertNotDeepOrStrict ( undefined , { } ) ;
714+ assertNotDeepOrStrict ( 'a' , [ 'a' ] ) ;
715+ assertNotDeepOrStrict ( 'a' , { 0 : 'a' } ) ;
716+ assertNotDeepOrStrict ( 1 , { } ) ;
717+ assertNotDeepOrStrict ( true , { } ) ;
718+ assertNotDeepOrStrict ( Symbol ( ) , { } ) ;
719+ assertNotDeepOrStrict ( Symbol ( ) , Symbol ( ) ) ;
720+
721+ assertOnlyDeepEqual ( 4 , '4' ) ;
722+ assertOnlyDeepEqual ( true , 1 ) ;
723+
724+ {
725+ const s = Symbol ( ) ;
726+ assertDeepAndStrictEqual ( s , s ) ;
727+ }
739728
740729// Primitive wrappers and object.
741- assert . deepEqual ( new String ( 'a' ) , [ 'a' ] ) ;
742- assert . deepEqual ( new String ( 'a' ) , { 0 : 'a' } ) ;
743- assert . deepEqual ( new Number ( 1 ) , { } ) ;
744- assert . deepEqual ( new Boolean ( true ) , { } ) ;
730+ assertOnlyDeepEqual ( new String ( 'a' ) , [ 'a' ] ) ;
731+ assertOnlyDeepEqual ( new String ( 'a' ) , { 0 : 'a' } ) ;
732+ assertOnlyDeepEqual ( new Number ( 1 ) , { } ) ;
733+ assertOnlyDeepEqual ( new Boolean ( true ) , { } ) ;
745734
746735// Same number of keys but different key names.
747- assert . throws ( ( ) => assert . deepEqual ( { a : 1 } , { b : 1 } ) , AssertionError ) ;
736+ assertNotDeepOrStrict ( { a : 1 } , { b : 1 } ) ;
748737
749738assert . deepStrictEqual ( new Date ( 2000 , 3 , 14 ) , new Date ( 2000 , 3 , 14 ) ) ;
750739
@@ -765,11 +754,6 @@ assert.throws(
765754
766755assert . notDeepStrictEqual ( new Date ( ) , new Date ( 2000 , 3 , 14 ) ) ;
767756
768- assert . deepStrictEqual ( / a / , / a / ) ;
769- assert . deepStrictEqual ( / a / g, / a / g) ;
770- assert . deepStrictEqual ( / a / i, / a / i) ;
771- assert . deepStrictEqual ( / a / m, / a / m) ;
772- assert . deepStrictEqual ( / a / igm, / a / igm) ;
773757assert . throws (
774758 ( ) => assert . deepStrictEqual ( / a b / , / a / ) ,
775759 {
@@ -879,33 +863,6 @@ obj2 = new Constructor2('Ryan', 'Dahl');
879863
880864assert . deepStrictEqual ( obj1 , obj2 ) ;
881865
882- // primitives
883- assert . throws ( ( ) => assert . deepStrictEqual ( 4 , '4' ) , AssertionError ) ;
884- assert . throws ( ( ) => assert . deepStrictEqual ( true , 1 ) , AssertionError ) ;
885- assert . throws ( ( ) => assert . deepStrictEqual ( Symbol ( ) , Symbol ( ) ) ,
886- AssertionError ) ;
887-
888- const s = Symbol ( ) ;
889- assert . deepStrictEqual ( s , s ) ;
890-
891- // Primitives and object.
892- assert . throws ( ( ) => assert . deepStrictEqual ( null , { } ) , AssertionError ) ;
893- assert . throws ( ( ) => assert . deepStrictEqual ( undefined , { } ) , AssertionError ) ;
894- assert . throws ( ( ) => assert . deepStrictEqual ( 'a' , [ 'a' ] ) , AssertionError ) ;
895- assert . throws ( ( ) => assert . deepStrictEqual ( 'a' , { 0 : 'a' } ) , AssertionError ) ;
896- assert . throws ( ( ) => assert . deepStrictEqual ( 1 , { } ) , AssertionError ) ;
897- assert . throws ( ( ) => assert . deepStrictEqual ( true , { } ) , AssertionError ) ;
898- assert . throws ( ( ) => assert . deepStrictEqual ( Symbol ( ) , { } ) , AssertionError ) ;
899-
900- // Primitive wrappers and object.
901- assert . throws ( ( ) => assert . deepStrictEqual ( new String ( 'a' ) , [ 'a' ] ) ,
902- AssertionError ) ;
903- assert . throws ( ( ) => assert . deepStrictEqual ( new String ( 'a' ) , { 0 : 'a' } ) ,
904- AssertionError ) ;
905- assert . throws ( ( ) => assert . deepStrictEqual ( new Number ( 1 ) , { } ) , AssertionError ) ;
906- assert . throws ( ( ) => assert . deepStrictEqual ( new Boolean ( true ) , { } ) ,
907- AssertionError ) ;
908-
909866// Check extra properties on errors.
910867{
911868 const a = new TypeError ( 'foo' ) ;
0 commit comments