@ -583,17 +583,45 @@ exports.isAlive = function isAlive(pid) {
}
}
} ;
} ;
exports . expectWarning = function ( name , expected ) {
function expectWarning ( name , expectedMessages ) {
if ( typeof expected === 'string' )
return exports . mustCall ( ( warning ) => {
expected = [ expected ] ;
process . on ( 'warning' , exports . mustCall ( ( warning ) => {
assert . strictEqual ( warning . name , name ) ;
assert . strictEqual ( warning . name , name ) ;
assert . ok ( expected . includes ( warning . message ) ,
assert . ok ( expectedMessages . includes ( warning . message ) ,
` unexpected error message: " ${ warning . message } " ` ) ;
` unexpected error message: " ${ warning . message } " ` ) ;
// Remove a warning message after it is seen so that we guarantee that we
// Remove a warning message after it is seen so that we guarantee that we
// get each message only once.
// get each message only once.
expected . splice ( expected . indexOf ( warning . message ) , 1 ) ;
expectedMessages . splice ( expectedMessages . indexOf ( warning . message ) , 1 ) ;
} , expected . length ) ) ;
} , expectedMessages . length ) ;
}
function expectWarningByName ( name , expected ) {
if ( typeof expected === 'string' ) {
expected = [ expected ] ;
}
process . on ( 'warning' , expectWarning ( name , expected ) ) ;
}
function expectWarningByMap ( warningMap ) {
const catchWarning = { } ;
Object . keys ( warningMap ) . forEach ( ( name ) => {
let expected = warningMap [ name ] ;
if ( typeof expected === 'string' ) {
expected = [ expected ] ;
}
catchWarning [ name ] = expectWarning ( name , expected ) ;
} ) ;
process . on ( 'warning' , ( warning ) => catchWarning [ warning . name ] ( warning ) ) ;
}
// accepts a warning name and description or array of descriptions or a map
// of warning names to description(s)
// ensures a warning is generated for each name/description pair
exports . expectWarning = function ( nameOrMap , expected ) {
if ( typeof nameOrMap === 'string' ) {
expectWarningByName ( nameOrMap , expected ) ;
} else {
expectWarningByMap ( nameOrMap ) ;
}
} ;
} ;
Object . defineProperty ( exports , 'hasIntl' , {
Object . defineProperty ( exports , 'hasIntl' , {