Skip to content

Commit c9f611a

Browse files
committed
Add test and reorder integrations
1 parent a5507d2 commit c9f611a

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

packages/node/src/sdk.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ export const defaultIntegrations = [
1212
// Common
1313
new CoreIntegrations.InboundFilters(),
1414
new CoreIntegrations.FunctionToString(),
15-
new ContextLines(),
1615
// Native Wrappers
1716
new Console(),
1817
new Http(),
@@ -21,6 +20,8 @@ export const defaultIntegrations = [
2120
new OnUnhandledRejection(),
2221
// Misc
2322
new LinkedErrors(),
23+
// ContextLines must come after LinkedErrors so that context is added to linked errors
24+
new ContextLines(),
2425
];
2526

2627
/**

packages/node/test/index.test.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {
1616
Scope,
1717
} from '../src';
1818
import { NodeBackend } from '../src/backend';
19+
import { LinkedErrors } from '../src/integrations';
1920

2021
jest.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

Comments
 (0)