From d4ab103d31d383f5c055e0cbaebdc714acd43035 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 3 Apr 2025 12:42:08 +0200 Subject: [PATCH 1/2] feat(node): Parse `SENTRY_DEBUG` env variable --- packages/node/src/sdk/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/node/src/sdk/index.ts b/packages/node/src/sdk/index.ts index d479407a4e67..aa4587c0fd38 100644 --- a/packages/node/src/sdk/index.ts +++ b/packages/node/src/sdk/index.ts @@ -203,6 +203,7 @@ function getClientOptions( const spotlight = options.spotlight ?? envToBool(process.env.SENTRY_SPOTLIGHT, { strict: true }) ?? process.env.SENTRY_SPOTLIGHT; const tracesSampleRate = getTracesSampleRate(options.tracesSampleRate); + const debug = envToBool(options.debug ?? process.env.SENTRY_DEBUG); const mergedOptions = { ...options, @@ -214,6 +215,7 @@ function getClientOptions( release, tracesSampleRate, spotlight, + debug, }; const integrations = options.integrations; From df0e06040bc54ec201d9f1b2cb0a6cf298293349 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 3 Apr 2025 14:24:50 +0200 Subject: [PATCH 2/2] feat(node): Add support for `SENTRY_DEBUG` env variable --- packages/node/src/sdk/index.ts | 3 +- packages/node/test/sdk/init.test.ts | 107 ++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+), 2 deletions(-) diff --git a/packages/node/src/sdk/index.ts b/packages/node/src/sdk/index.ts index aa4587c0fd38..21088a253fe3 100644 --- a/packages/node/src/sdk/index.ts +++ b/packages/node/src/sdk/index.ts @@ -203,7 +203,6 @@ function getClientOptions( const spotlight = options.spotlight ?? envToBool(process.env.SENTRY_SPOTLIGHT, { strict: true }) ?? process.env.SENTRY_SPOTLIGHT; const tracesSampleRate = getTracesSampleRate(options.tracesSampleRate); - const debug = envToBool(options.debug ?? process.env.SENTRY_DEBUG); const mergedOptions = { ...options, @@ -215,7 +214,7 @@ function getClientOptions( release, tracesSampleRate, spotlight, - debug, + debug: envToBool(options.debug ?? process.env.SENTRY_DEBUG), }; const integrations = options.integrations; diff --git a/packages/node/test/sdk/init.test.ts b/packages/node/test/sdk/init.test.ts index d633926f9d2c..089d5c09b1da 100644 --- a/packages/node/test/sdk/init.test.ts +++ b/packages/node/test/sdk/init.test.ts @@ -149,6 +149,113 @@ describe('init()', () => { expect(client).toBeInstanceOf(NodeClient); }); + + describe('environment variable options', () => { + const originalProcessEnv = { ...process.env }; + + afterEach(() => { + process.env = originalProcessEnv; + global.__SENTRY__ = {}; + cleanupOtel(); + vi.clearAllMocks(); + }); + + it('sets debug from `SENTRY_DEBUG` env variable', () => { + process.env.SENTRY_DEBUG = '1'; + + const client = init({ dsn: PUBLIC_DSN }); + + expect(client?.getOptions()).toEqual( + expect.objectContaining({ + debug: true, + }), + ); + }); + + it('prefers `debug` option over `SENTRY_DEBUG` env variable', () => { + process.env.SENTRY_DEBUG = '1'; + + const client = init({ dsn: PUBLIC_DSN, debug: false }); + + expect(client?.getOptions()).toEqual( + expect.objectContaining({ + debug: false, + }), + ); + }); + + it('sets tracesSampleRate from `SENTRY_TRACES_SAMPLE_RATE` env variable', () => { + process.env.SENTRY_TRACES_SAMPLE_RATE = '0.5'; + + const client = init({ dsn: PUBLIC_DSN }); + + expect(client?.getOptions()).toEqual( + expect.objectContaining({ + tracesSampleRate: 0.5, + }), + ); + }); + + it('prefers `tracesSampleRate` option over `SENTRY_TRACES_SAMPLE_RATE` env variable', () => { + process.env.SENTRY_TRACES_SAMPLE_RATE = '0.5'; + + const client = init({ dsn: PUBLIC_DSN, tracesSampleRate: 0.1 }); + + expect(client?.getOptions()).toEqual( + expect.objectContaining({ + tracesSampleRate: 0.1, + }), + ); + }); + + it('sets release from `SENTRY_RELEASE` env variable', () => { + process.env.SENTRY_RELEASE = '1.0.0'; + + const client = init({ dsn: PUBLIC_DSN }); + + expect(client?.getOptions()).toEqual( + expect.objectContaining({ + release: '1.0.0', + }), + ); + }); + + it('prefers `release` option over `SENTRY_RELEASE` env variable', () => { + process.env.SENTRY_RELEASE = '1.0.0'; + + const client = init({ dsn: PUBLIC_DSN, release: '2.0.0' }); + + expect(client?.getOptions()).toEqual( + expect.objectContaining({ + release: '2.0.0', + }), + ); + }); + + it('sets environment from `SENTRY_ENVIRONMENT` env variable', () => { + process.env.SENTRY_ENVIRONMENT = 'production'; + + const client = init({ dsn: PUBLIC_DSN }); + + expect(client?.getOptions()).toEqual( + expect.objectContaining({ + environment: 'production', + }), + ); + }); + + it('prefers `environment` option over `SENTRY_ENVIRONMENT` env variable', () => { + process.env.SENTRY_ENVIRONMENT = 'production'; + + const client = init({ dsn: PUBLIC_DSN, environment: 'staging' }); + + expect(client?.getOptions()).toEqual( + expect.objectContaining({ + environment: 'staging', + }), + ); + }); + }); }); describe('validateOpenTelemetrySetup', () => {