Now setting mocked console in warn module for tests
- Replacing console broken in newer versions of node/v8 - Replacing console.warn/log works fine, but is a poor choice for testingclosure/master
parent
0f4ce6acc1
commit
27eea93d6f
25
lib/warn.js
25
lib/warn.js
|
@ -28,6 +28,16 @@
|
|||
*/
|
||||
var _handler = null;
|
||||
|
||||
/**
|
||||
* Console to use for logging
|
||||
*
|
||||
* This reference allows an alternative console to be used. Must contain warn()
|
||||
* or log() methods.
|
||||
*
|
||||
* @type {Object}
|
||||
*/
|
||||
var _console = console;
|
||||
|
||||
|
||||
/**
|
||||
* Permits wrapping an exception as a warning
|
||||
|
@ -106,7 +116,7 @@ exports.handlers = {
|
|||
{
|
||||
var dest;
|
||||
|
||||
console && ( dest = console.warn || console.log ) &&
|
||||
_console && ( dest = _console.warn || _console.log ) &&
|
||||
dest( 'Warning: ' + warning.message );
|
||||
},
|
||||
|
||||
|
@ -175,6 +185,19 @@ exports.handle = function( warning )
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets active console
|
||||
*
|
||||
* @param {Object} console containing warn() or log() method
|
||||
*
|
||||
* @return {undefined}
|
||||
*/
|
||||
exports.setConsole = function( console )
|
||||
{
|
||||
_console = console;
|
||||
};
|
||||
|
||||
|
||||
// set the default handler
|
||||
_handler = exports.handlers.log;
|
||||
|
||||
|
|
|
@ -31,36 +31,15 @@ var common = require( './common' ),
|
|||
;
|
||||
|
||||
|
||||
/**
|
||||
* Return the console object, without throwing errors if it does not exist
|
||||
*
|
||||
* @return {Object} console
|
||||
*/
|
||||
function backupConsole()
|
||||
{
|
||||
// ensure that we don't throw errors if console is not defined
|
||||
if ( typeof console !== 'undefined' )
|
||||
{
|
||||
return console;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* The log warning handler should log warnings to the console
|
||||
*/
|
||||
( function testLogWarningHandlerLogsMessageToConsole()
|
||||
{
|
||||
var logged = false,
|
||||
|
||||
// back up console ref
|
||||
console_ = backupConsole()
|
||||
;
|
||||
var logged = false;
|
||||
|
||||
// mock console
|
||||
console = {
|
||||
warn.setConsole( {
|
||||
warn: function( message )
|
||||
{
|
||||
assert.equal( ( 'Warning: ' + warning.message ), message,
|
||||
|
@ -69,7 +48,7 @@ function backupConsole()
|
|||
|
||||
logged = true;
|
||||
},
|
||||
};
|
||||
} );
|
||||
|
||||
// call handler with the warning
|
||||
warn.handlers.log( warning );
|
||||
|
@ -79,7 +58,7 @@ function backupConsole()
|
|||
);
|
||||
|
||||
// restore console
|
||||
console = console_;
|
||||
warn.setConsole( console );
|
||||
} )();
|
||||
|
||||
|
||||
|
@ -90,17 +69,14 @@ function backupConsole()
|
|||
*/
|
||||
( function testLogWarningHandlerHandlesMissingConsole()
|
||||
{
|
||||
// back up console
|
||||
var console_ = backupConsole();
|
||||
|
||||
// destroy it
|
||||
console = undefined;
|
||||
warn.setConsole( undefined );
|
||||
|
||||
// attempt to log
|
||||
warn.handlers.log( warning );
|
||||
|
||||
// restore console
|
||||
console = console_;
|
||||
warn.setConsole( console );
|
||||
} )();
|
||||
|
||||
|
||||
|
@ -111,16 +87,14 @@ function backupConsole()
|
|||
*/
|
||||
( function testLogWarningHandlerWillFallBackToLogMethodIfWarnIsMissing()
|
||||
{
|
||||
// back up and overwrite console to contain only log()
|
||||
var console_ = backupConsole(),
|
||||
given = '';
|
||||
var given = '';
|
||||
|
||||
console = {
|
||||
warn.setConsole( {
|
||||
log: function( message )
|
||||
{
|
||||
given = message;
|
||||
}
|
||||
};
|
||||
} );
|
||||
|
||||
// attempt to log
|
||||
warn.handlers.log( warning );
|
||||
|
@ -130,7 +104,7 @@ function backupConsole()
|
|||
);
|
||||
|
||||
// restore console
|
||||
console = console_;
|
||||
warn.setConsole( console );
|
||||
} )();
|
||||
|
||||
|
||||
|
@ -166,14 +140,13 @@ function backupConsole()
|
|||
( function testDismissWarningHandlerShouldDoNothing()
|
||||
{
|
||||
// destroy the console to ensure nothing is logged
|
||||
var console_ = backupConsole();
|
||||
console = undefined;
|
||||
warn.setConsole( undefined );
|
||||
|
||||
// don't catch anything, to ensure no errors occur and that no exceptions
|
||||
// are thrown
|
||||
warn.handlers.dismiss( warning );
|
||||
|
||||
// restore console
|
||||
console = console_;
|
||||
warn.setConsole( console );
|
||||
} )();
|
||||
|
||||
|
|
|
@ -35,17 +35,15 @@ var common = require( './common' ),
|
|||
*/
|
||||
( function testDefaultHandlerIsLogger()
|
||||
{
|
||||
// back up console object
|
||||
var console_ = ( typeof console !== 'undefined' ) ? console : undefined,
|
||||
called = false;
|
||||
var called = false;
|
||||
|
||||
// stub it
|
||||
console = {
|
||||
warn.setConsole( {
|
||||
warn: function()
|
||||
{
|
||||
called = true;
|
||||
},
|
||||
};
|
||||
} );
|
||||
|
||||
warn.handle( warn.Warning( Error( 'foo' ) ) );
|
||||
|
||||
|
@ -54,7 +52,7 @@ var common = require( './common' ),
|
|||
);
|
||||
|
||||
// restore console
|
||||
console = console_;
|
||||
warn.setConsole( console );
|
||||
} )();
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue