Skip to content

Commit 0e63302

Browse files
committed
Added logic that stringifies releases if release is an object in browser/node
1 parent d98f5d6 commit 0e63302

File tree

4 files changed

+19
-0
lines changed

4 files changed

+19
-0
lines changed

packages/browser/src/sdk.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,10 @@ export function init(options: BrowserOptions = {}): void {
8383
if (window.SENTRY_RELEASE && window.SENTRY_RELEASE.id) {
8484
options.release = window.SENTRY_RELEASE.id;
8585
}
86+
} else if (typeof options.release !== 'string') {
87+
options.release = JSON.stringify(options.release);
8688
}
89+
8790
if (options.autoSessionTracking === undefined) {
8891
options.autoSessionTracking = true;
8992
}

packages/browser/test/unit/index.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,13 @@ describe('SentryBrowser initialization', () => {
185185
expect(global.__SENTRY__.hub._stack[0].client.getOptions().release).to.be.undefined;
186186
});
187187

188+
it('should use window.SENTRY_RELEASE to set release on initialization if available', () => {
189+
const releaseObj = { name: 'release hello world' };
190+
// @ts-ignore
191+
init({ dsn, release: releaseObj });
192+
expect(global.__SENTRY__.hub._stack[0].client.getOptions().release).equal(JSON.stringify(releaseObj));
193+
});
194+
188195
describe('SDK metadata', () => {
189196
it('should set SDK data when Sentry.init() is called', () => {
190197
init({ dsn });

packages/node/src/sdk.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ export function init(options: NodeOptions = {}): void {
9797
if (detectedRelease !== undefined) {
9898
options.release = detectedRelease;
9999
}
100+
} else if (typeof options.release !== 'string') {
101+
options.release = JSON.stringify(options.release);
100102
}
101103

102104
if (options.environment === undefined && process.env.SENTRY_ENVIRONMENT) {

packages/node/test/index.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,13 @@ describe('SentryNode initialization', () => {
279279
global.SENTRY_RELEASE = undefined;
280280
});
281281

282+
test('release is stringified, if options.release is passed as an object', () => {
283+
const releaseObj = { name: 'release hello world' };
284+
// @ts-ignore
285+
init({ dsn, release: releaseObj });
286+
expect(global.__SENTRY__.hub._stack[0].client.getOptions().release).toEqual(JSON.stringify(releaseObj));
287+
});
288+
282289
describe('SDK metadata', () => {
283290
it('should set SDK data when Sentry.init() is called', () => {
284291
init({ dsn });

0 commit comments

Comments
 (0)