File tree Expand file tree Collapse file tree 3 files changed +21
-4
lines changed Expand file tree Collapse file tree 3 files changed +21
-4
lines changed Original file line number Diff line number Diff line change @@ -25,9 +25,9 @@ var logForGivenLevel = function(level) {
25
25
if ( originalConsoleLevel ) {
26
26
// IE9 doesn't allow calling apply on console functions directly
27
27
// See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193
28
- Function . prototype . bind
29
- . call ( originalConsoleLevel , originalConsole )
30
- . apply ( originalConsole , args ) ;
28
+ Function . prototype . bind
29
+ . call ( originalConsoleLevel , originalConsole )
30
+ . apply ( originalConsole , args ) ;
31
31
}
32
32
} ;
33
33
} ;
@@ -39,5 +39,7 @@ while(level) {
39
39
}
40
40
// export
41
41
window . console = console ;
42
+ // keep a reference to the original console so we don't recurse on ourselves
43
+ window . _Raven_original_console = originalConsole ;
42
44
43
45
} ( window , window . Raven , window . console || { } ) ) ;
Original file line number Diff line number Diff line change @@ -851,9 +851,13 @@ function uuid4() {
851
851
852
852
function logDebug ( level ) {
853
853
if ( window . console && console [ level ] && Raven . debug ) {
854
+ // If `window._Raven_original_console exists, that means
855
+ // we've already patched `console`. So we want to avoid recursion
856
+ // and utilize the real, original one.
857
+ var originalConsole = window . _Raven_original_console || console ;
854
858
// _slice is coming from vendor/TraceKit/tracekit.js
855
859
// so it's accessible globally
856
- console [ level ] . apply ( console , _slice . call ( arguments , 1 ) ) ;
860
+ originalConsole [ level ] . apply ( originalConsole , _slice . call ( arguments , 1 ) ) ;
857
861
}
858
862
}
859
863
Original file line number Diff line number Diff line change @@ -342,6 +342,17 @@ describe('globals', function() {
342
342
this . sinon . stub ( console , level ) ;
343
343
logDebug ( level , message , { } , 'foo' ) ;
344
344
} ) ;
345
+
346
+ it ( 'should write to window._Raven_original_console when patched' , function ( ) {
347
+ Raven . debug = true ;
348
+ this . sinon . stub ( console ) ;
349
+ window . _Raven_original_console = { 'error' : function ( ) { } } ;
350
+ this . sinon . stub ( window . _Raven_original_console , level ) ;
351
+ logDebug ( level , message ) ;
352
+ assert . isTrue ( window . _Raven_original_console [ level ] . called ) ;
353
+ assert . isFalse ( console [ level ] . called ) ;
354
+ delete window . _Raven_original_console ;
355
+ } ) ;
345
356
} ) ;
346
357
347
358
describe ( 'setAuthQueryString' , function ( ) {
You can’t perform that action at this time.
0 commit comments