@@ -256,6 +256,57 @@ describe('integration', function () {
256
256
) ;
257
257
} ) ;
258
258
259
+ it ( 'should catch thrown strings' , function ( done ) {
260
+ var iframe = this . iframe ;
261
+
262
+ iframeExecute ( iframe , done ,
263
+ function ( ) {
264
+ // intentionally loading this error via a script file to make
265
+ // sure it is 1) not caught by instrumentation 2) doesn't trigger
266
+ // "Script error"
267
+ var script = document . createElement ( 'script' ) ;
268
+ script . src = 'throw-string.js' ;
269
+ script . onload = function ( ) {
270
+ done ( ) ;
271
+ } ;
272
+ document . head . appendChild ( script ) ;
273
+ } ,
274
+ function ( ) {
275
+ var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
276
+ assert . match ( ravenData . exception . values [ 0 ] . value , / s t r i n g E r r o r $ / ) ;
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 / )
279
+ assert . match ( ravenData . exception . values [ 0 ] . stacktrace . frames [ 0 ] [ 'function' ] , / \? | g l o b a l c o d e / ) ;
280
+ }
281
+ ) ;
282
+ } ) ;
283
+
284
+ it ( 'should catch thrown errors' , function ( done ) {
285
+ var iframe = this . iframe ;
286
+
287
+ iframeExecute ( iframe , done ,
288
+ function ( ) {
289
+ // intentionally loading this error via a script file to make
290
+ // sure it is 1) not caught by instrumentation 2) doesn't trigger
291
+ // "Script error"
292
+ var script = document . createElement ( 'script' ) ;
293
+ script . src = 'throw-error.js' ;
294
+ script . onload = function ( ) {
295
+ done ( ) ;
296
+ } ;
297
+ document . head . appendChild ( script ) ;
298
+ } ,
299
+ function ( ) {
300
+ var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
301
+ assert . match ( ravenData . exception . values [ 0 ] . type , / ^ E r r o r / ) ;
302
+ assert . match ( ravenData . exception . values [ 0 ] . value , / r e a l E r r o r $ / ) ;
303
+ assert . isAbove ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , 0 ) ; // 1 or 2 depending on platform
304
+ 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 - e r r o r \. j s / )
305
+ assert . match ( ravenData . exception . values [ 0 ] . stacktrace . frames [ 0 ] [ 'function' ] , / \? | g l o b a l c o d e / ) ;
306
+ }
307
+ ) ;
308
+ } ) ;
309
+
259
310
it ( 'should NOT catch an exception already caught via Raven.wrap' , function ( done ) {
260
311
var iframe = this . iframe ;
261
312
0 commit comments