@@ -43,7 +43,7 @@ describe('integration', function () {
43
43
done ( ) ;
44
44
} ,
45
45
function ( ) {
46
- var ravenData = iframe . contentWindow . ravenData ;
46
+ var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
47
47
assert . equal ( ravenData . message , 'Hello' ) ;
48
48
}
49
49
) ;
@@ -62,7 +62,7 @@ describe('integration', function () {
62
62
}
63
63
} ,
64
64
function ( ) {
65
- var ravenData = iframe . contentWindow . ravenData ;
65
+ var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
66
66
assert . isAbove ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , 1 ) ;
67
67
}
68
68
) ;
@@ -79,12 +79,51 @@ describe('integration', function () {
79
79
eval ( 'foo{};' ) ;
80
80
} ,
81
81
function ( ) {
82
- var ravenData = iframe . contentWindow . ravenData ;
82
+ var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
83
83
assert . isTrue ( / S y n t a x E r r o r / . test ( ravenData . message ) ) ; // full message differs per-browser
84
84
assert . equal ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , 1 ) ; // just one frame
85
85
}
86
86
) ;
87
87
} ) ;
88
+
89
+ it ( 'should NOT catch an exception already caught via Raven.wrap' , function ( done ) {
90
+ var iframe = this . iframe ;
91
+
92
+ iframeExecute ( iframe , done ,
93
+ function ( ) {
94
+ setTimeout ( done ) ;
95
+ Raven . wrap ( function ( ) {
96
+ foo ( ) ;
97
+ } ) ( ) ;
98
+ } ,
99
+ function ( ) {
100
+ var ravenData = iframe . contentWindow . ravenData ;
101
+ assert . equal ( ravenData . length , 1 ) ; // one caught error
102
+ }
103
+ ) ;
104
+ } ) ;
105
+
106
+ it ( 'should catch an exception already caught [but rethrown] via Raven.captureException' , function ( done ) {
107
+ // unlike Raven.wrap which ALWAYS re-throws, we don't know if the user will
108
+ // re-throw an exception passed to Raven.captureException, and so we cannot
109
+ // automatically suppress the next error caught through window.onerror
110
+ var iframe = this . iframe ;
111
+ iframeExecute ( iframe , done ,
112
+ function ( ) {
113
+ setTimeout ( done , 50 ) ;
114
+ try {
115
+ foo ( ) ;
116
+ } catch ( e ) {
117
+ Raven . captureException ( e ) ;
118
+ throw e ; // intentionally re-throw
119
+ }
120
+ } ,
121
+ function ( ) {
122
+ var ravenData = iframe . contentWindow . ravenData ;
123
+ assert . equal ( ravenData . length , 2 ) ;
124
+ }
125
+ ) ;
126
+ } ) ;
88
127
} ) ;
89
128
90
129
describe ( 'wrapped built-ins' , function ( ) {
@@ -111,7 +150,7 @@ describe('integration', function () {
111
150
}
112
151
} ,
113
152
function ( ) {
114
- var ravenData = iframe . contentWindow . ravenData ;
153
+ var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
115
154
assert . isAbove ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , 2 ) ;
116
155
}
117
156
) ;
@@ -140,7 +179,7 @@ describe('integration', function () {
140
179
}
141
180
} ,
142
181
function ( ) {
143
- var ravenData = iframe . contentWindow . ravenData ;
182
+ var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
144
183
assert . equal ( ravenData , null ) ; // should never trigger error
145
184
}
146
185
) ;
@@ -157,7 +196,7 @@ describe('integration', function () {
157
196
} , 10 ) ;
158
197
} ,
159
198
function ( ) {
160
- var ravenData = iframe . contentWindow . ravenData ;
199
+ var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
161
200
assert . isAbove ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , 2 ) ;
162
201
}
163
202
) ;
@@ -175,7 +214,7 @@ describe('integration', function () {
175
214
} , 10 ) ;
176
215
} ,
177
216
function ( ) {
178
- var ravenData = iframe . contentWindow . ravenData ;
217
+ var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
179
218
assert . isAbove ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , 2 ) ;
180
219
}
181
220
) ;
@@ -194,7 +233,7 @@ describe('integration', function () {
194
233
} ) ;
195
234
} ,
196
235
function ( ) {
197
- var ravenData = iframe . contentWindow . ravenData ;
236
+ var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
198
237
assert . isAbove ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , 2 ) ;
199
238
}
200
239
) ;
@@ -214,7 +253,7 @@ describe('integration', function () {
214
253
xhr . send ( ) ;
215
254
} ,
216
255
function ( ) {
217
- var ravenData = iframe . contentWindow . ravenData ;
256
+ var ravenData = iframe . contentWindow . ravenData [ 0 ] ;
218
257
// # of frames alter significantly between chrome/firefox & safari
219
258
assert . isAbove ( ravenData . exception . values [ 0 ] . stacktrace . frames . length , 2 ) ;
220
259
}
0 commit comments