@@ -16,6 +16,7 @@ import {
1616 Scope ,
1717} from '../src' ;
1818import { NodeBackend } from '../src/backend' ;
19+ import { LinkedErrors } from '../src/integrations' ;
1920
2021jest . mock ( '@sentry/core' , ( ) => {
2122 const original = jest . requireActual ( '@sentry/core' ) ;
@@ -198,6 +199,46 @@ describe('SentryNode', () => {
198199 }
199200 } ) ;
200201
202+ test . only ( 'capture a linked exception with pre/post context' , done => {
203+ expect . assertions ( 15 ) ;
204+ getCurrentHub ( ) . bindClient (
205+ new NodeClient ( {
206+ integrations : i => [ new LinkedErrors ( ) , ...i ] ,
207+ beforeSend : ( event : Event ) => {
208+ expect ( event . exception ) . not . toBeUndefined ( ) ;
209+ expect ( event . exception ! . values ! [ 1 ] ) . not . toBeUndefined ( ) ;
210+ expect ( event . exception ! . values ! [ 1 ] . stacktrace ! ) . not . toBeUndefined ( ) ;
211+ expect ( event . exception ! . values ! [ 1 ] . stacktrace ! . frames ! [ 1 ] ) . not . toBeUndefined ( ) ;
212+ expect ( event . exception ! . values ! [ 1 ] . stacktrace ! . frames ! [ 1 ] . pre_context ) . not . toBeUndefined ( ) ;
213+ expect ( event . exception ! . values ! [ 1 ] . stacktrace ! . frames ! [ 1 ] . post_context ) . not . toBeUndefined ( ) ;
214+ expect ( event . exception ! . values ! [ 1 ] . type ) . toBe ( 'Error' ) ;
215+ expect ( event . exception ! . values ! [ 1 ] . value ) . toBe ( 'test' ) ;
216+
217+ expect ( event . exception ! . values ! [ 0 ] ) . not . toBeUndefined ( ) ;
218+ expect ( event . exception ! . values ! [ 0 ] . stacktrace ! ) . not . toBeUndefined ( ) ;
219+ expect ( event . exception ! . values ! [ 0 ] . stacktrace ! . frames ! [ 1 ] ) . not . toBeUndefined ( ) ;
220+ expect ( event . exception ! . values ! [ 0 ] . stacktrace ! . frames ! [ 1 ] . pre_context ) . not . toBeUndefined ( ) ;
221+ expect ( event . exception ! . values ! [ 0 ] . stacktrace ! . frames ! [ 1 ] . post_context ) . not . toBeUndefined ( ) ;
222+ expect ( event . exception ! . values ! [ 0 ] . type ) . toBe ( 'Error' ) ;
223+ expect ( event . exception ! . values ! [ 0 ] . value ) . toBe ( 'cause' ) ;
224+ done ( ) ;
225+ return null ;
226+ } ,
227+ dsn,
228+ } ) ,
229+ ) ;
230+ try {
231+ throw new Error ( 'test' ) ;
232+ } catch ( e ) {
233+ try {
234+ throw new Error ( 'cause' ) ;
235+ } catch ( c ) {
236+ e . cause = c ;
237+ captureException ( e ) ;
238+ }
239+ }
240+ } ) ;
241+
201242 test ( 'capture a message' , done => {
202243 expect . assertions ( 2 ) ;
203244 getCurrentHub ( ) . bindClient (
0 commit comments