@@ -554,17 +554,45 @@ exports.isAlive = function isAlive(pid) {
554
554
}
555
555
} ;
556
556
557
- exports . expectWarning = function ( name , expected ) {
558
- if ( typeof expected === 'string' )
559
- expected = [ expected ] ;
560
- process . on ( 'warning' , exports . mustCall ( ( warning ) => {
557
+ function expectWarning ( name , expectedMessages ) {
558
+ return exports . mustCall ( ( warning ) => {
561
559
assert . strictEqual ( warning . name , name ) ;
562
- assert . ok ( expected . includes ( warning . message ) ,
560
+ assert . ok ( expectedMessages . includes ( warning . message ) ,
563
561
`unexpected error message: "${ warning . message } "` ) ;
564
562
// Remove a warning message after it is seen so that we guarantee that we
565
563
// get each message only once.
566
- expected . splice ( expected . indexOf ( warning . message ) , 1 ) ;
567
- } , expected . length ) ) ;
564
+ expectedMessages . splice ( expectedMessages . indexOf ( warning . message ) , 1 ) ;
565
+ } , expectedMessages . length ) ;
566
+ }
567
+
568
+ function expectWarningByName ( name , expected ) {
569
+ if ( typeof expected === 'string' ) {
570
+ expected = [ expected ] ;
571
+ }
572
+ process . on ( 'warning' , expectWarning ( name , expected ) ) ;
573
+ }
574
+
575
+ function expectWarningByMap ( warningMap ) {
576
+ const catchWarning = { } ;
577
+ Object . keys ( warningMap ) . forEach ( ( name ) => {
578
+ let expected = warningMap [ name ] ;
579
+ if ( typeof expected === 'string' ) {
580
+ expected = [ expected ] ;
581
+ }
582
+ catchWarning [ name ] = expectWarning ( name , expected ) ;
583
+ } ) ;
584
+ process . on ( 'warning' , ( warning ) => catchWarning [ warning . name ] ( warning ) ) ;
585
+ }
586
+
587
+ // accepts a warning name and description or array of descriptions or a map
588
+ // of warning names to description(s)
589
+ // ensures a warning is generated for each name/description pair
590
+ exports . expectWarning = function ( nameOrMap , expected ) {
591
+ if ( typeof nameOrMap === 'string' ) {
592
+ expectWarningByName ( nameOrMap , expected ) ;
593
+ } else {
594
+ expectWarningByMap ( nameOrMap ) ;
595
+ }
568
596
} ;
569
597
570
598
Object . defineProperty ( exports , 'hasIntl' , {
0 commit comments