1
0
Fork 0

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 testing
closure/master
Mike Gerwitz 2011-12-04 12:30:15 -05:00
parent 0f4ce6acc1
commit 27eea93d6f
3 changed files with 40 additions and 46 deletions

View File

@ -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;

View File

@ -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 );
} )();

View File

@ -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 );
} )();