@@ -275,7 +275,39 @@ describe('integration', function () {
275
275
var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
276
276
assert . match ( ravenData . exception . values [ 0 ] . value , / s t r i n g E r r o r $ / ) ;
277
277
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 \/ / ) ;
279
311
assert . match ( ravenData . exception . values [ 0 ] . stacktrace . frames [ 0 ] [ 'function' ] , / \? | g l o b a l c o d e / ) ;
280
312
}
281
313
) ;
0 commit comments