@@ -275,7 +275,39 @@ describe('integration', function () {
275275 var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
276276 assert . match ( ravenData . exception . values [ 0 ] . value , / s t r i n g E r r o r $ / ) ;
277277 assert . equal ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , 1 ) ; // always 1 because thrown strings can't provide > 1 frame
278- assert . match ( ravenData . exception . values [ 0 ] . stacktrace . frames [ 0 ] . filename , / \/ t e s t \/ i n t e g r a t i o n \/ t h r o w - s t r i n g \. j s / )
278+
279+ // some browsers extract proper url, line, and column for thrown strings
280+ // but not all - falls back to frame url
281+ assert . match ( ravenData . exception . values [ 0 ] . stacktrace . frames [ 0 ] . filename , / \/ t e s t \/ i n t e g r a t i o n \/ / ) ;
282+ assert . match ( ravenData . exception . values [ 0 ] . stacktrace . frames [ 0 ] [ 'function' ] , / \? | g l o b a l c o d e / ) ;
283+ }
284+ ) ;
285+ } ) ;
286+
287+ it ( 'should catch thrown objects' , function ( done ) {
288+ var iframe = this . iframe ;
289+
290+ iframeExecute ( iframe , done ,
291+ function ( ) {
292+ // intentionally loading this error via a script file to make
293+ // sure it is 1) not caught by instrumentation 2) doesn't trigger
294+ // "Script error"
295+ var script = document . createElement ( 'script' ) ;
296+ script . src = 'throw-object.js' ;
297+ script . onload = function ( ) {
298+ done ( ) ;
299+ } ;
300+ document . head . appendChild ( script ) ;
301+ } ,
302+ function ( ) {
303+ var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
304+ assert . equal ( ravenData . exception . values [ 0 ] . type , undefined ) ;
305+ assert . equal ( ravenData . exception . values [ 0 ] . value , '[object Object]' ) ;
306+ assert . equal ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , 1 ) ; // always 1 because thrown objects can't provide > 1 frame
307+
308+ // some browsers extract proper url, line, and column for thrown objects
309+ // but not all - falls back to frame url
310+ assert . match ( ravenData . exception . values [ 0 ] . stacktrace . frames [ 0 ] . filename , / \/ t e s t \/ i n t e g r a t i o n \/ / ) ;
279311 assert . match ( ravenData . exception . values [ 0 ] . stacktrace . frames [ 0 ] [ 'function' ] , / \? | g l o b a l c o d e / ) ;
280312 }
281313 ) ;
0 commit comments