@@ -22,6 +22,11 @@ function flushRavenState() {
2222 startTime = 0 ;
2323 ravenNotConfiguredError = undefined ;
2424 originalConsole = window . console || { } ;
25+ originalConsoleMethods = { } ;
26+
27+ for ( var method in originalConsole ) {
28+ originalConsoleMethods [ method ] = originalConsole [ method ] ;
29+ }
2530
2631 Raven . uninstall ( ) ;
2732}
@@ -326,23 +331,33 @@ describe('globals', function() {
326331
327332 it ( 'should not write to console when Raven.debug is false' , function ( ) {
328333 Raven . debug = false ;
329- this . sinon . stub ( originalConsole , level ) ;
334+ this . sinon . stub ( originalConsoleMethods , level ) ;
330335 logDebug ( level , message ) ;
331- assert . isFalse ( originalConsole [ level ] . called ) ;
336+ assert . isFalse ( originalConsoleMethods [ level ] . called ) ;
332337 } ) ;
333338
334339 it ( 'should write to console when Raven.debug is true' , function ( ) {
335340 Raven . debug = true ;
336- this . sinon . stub ( originalConsole , level ) ;
341+ this . sinon . stub ( originalConsoleMethods , level ) ;
337342 logDebug ( level , message ) ;
338- assert . isTrue ( originalConsole [ level ] . calledOnce ) ;
343+ assert . isTrue ( originalConsoleMethods [ level ] . calledOnce ) ;
339344 } ) ;
340345
341346 it ( 'should handle variadic arguments' , function ( ) {
342347 Raven . debug = true ;
343- this . sinon . stub ( originalConsole , level ) ;
348+ this . sinon . stub ( originalConsoleMethods , level ) ;
344349 logDebug ( level , message , { } , 'foo' ) ;
345350 } ) ;
351+
352+ it ( 'should be unaffected by monkeypatches to the console built-in' , function ( ) {
353+ Raven . debug = true ;
354+ this . sinon . stub ( console , level ) . throws ( "can't touch this" ) ;
355+ this . sinon . stub ( originalConsoleMethods , level ) ;
356+ logDebug ( level , message ) ;
357+ assert . isTrue ( originalConsoleMethods [ level ] . calledOnce ) ;
358+ assert . isFalse ( console [ level ] . called ) ;
359+ console [ level ] . restore ( ) ;
360+ } ) ;
346361 } ) ;
347362
348363 describe ( 'setAuthQueryString' , function ( ) {
0 commit comments