Skip to content

Commit 56f6dfe

Browse files
sergicalclaude
andcommitted
test(deno): Add tests for log flushing and server.address attribute
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 8f0f2b0 commit 56f6dfe

File tree

1 file changed

+60
-1
lines changed

1 file changed

+60
-1
lines changed

packages/deno/test/mod.test.ts

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { Envelope, Event } from '@sentry/core';
1+
import type { Envelope, Event, Log } from '@sentry/core';
22
import { createStackParser, forEachEnvelopeItem, nodeStackLineParser } from '@sentry/core';
33
import { assertEquals } from 'https://deno.land/std@0.202.0/assert/assert_equals.ts';
44
import { assertSnapshot } from 'https://deno.land/std@0.202.0/testing/snapshot.ts';
@@ -148,6 +148,65 @@ Deno.test('logger.info captures a log envelope item', async () => {
148148
assertEquals(logItem.items[0].body, 'test log message');
149149
});
150150

151+
Deno.test('adds server.address to log attributes', () => {
152+
const client = new DenoClient({
153+
dsn: 'https://233a45e5efe34c47a3536797ce15dafa@nothing.here/5650507',
154+
enableLogs: true,
155+
serverName: 'test-server',
156+
integrations: getDefaultIntegrations({}),
157+
stackParser: createStackParser(nodeStackLineParser()),
158+
transport: makeTestTransport(() => {}),
159+
});
160+
161+
const log: Log = { level: 'info', message: 'test message', attributes: {} };
162+
client.emit('beforeCaptureLog', log);
163+
164+
assertEquals(log.attributes?.['server.address'], 'test-server');
165+
});
166+
167+
Deno.test('preserves existing log attributes when adding server.address', () => {
168+
const client = new DenoClient({
169+
dsn: 'https://233a45e5efe34c47a3536797ce15dafa@nothing.here/5650507',
170+
enableLogs: true,
171+
serverName: 'test-server',
172+
integrations: getDefaultIntegrations({}),
173+
stackParser: createStackParser(nodeStackLineParser()),
174+
transport: makeTestTransport(() => {}),
175+
});
176+
177+
const log: Log = { level: 'info', message: 'test message', attributes: { 'existing.attr': 'value' } };
178+
client.emit('beforeCaptureLog', log);
179+
180+
assertEquals(log.attributes?.['existing.attr'], 'value');
181+
assertEquals(log.attributes?.['server.address'], 'test-server');
182+
});
183+
184+
Deno.test('close() removes unload listener when enableLogs is true', async () => {
185+
const removeEventListenerCalls: Array<string> = [];
186+
const originalRemoveEventListener = globalThis.removeEventListener;
187+
globalThis.removeEventListener = ((event: string, ...args: unknown[]) => {
188+
removeEventListenerCalls.push(event);
189+
// deno-lint-ignore no-explicit-any
190+
return originalRemoveEventListener.call(globalThis, event, ...(args as [any]));
191+
}) as typeof globalThis.removeEventListener;
192+
193+
try {
194+
const client = new DenoClient({
195+
dsn: 'https://233a45e5efe34c47a3536797ce15dafa@nothing.here/5650507',
196+
enableLogs: true,
197+
integrations: getDefaultIntegrations({}),
198+
stackParser: createStackParser(nodeStackLineParser()),
199+
transport: makeTestTransport(() => {}),
200+
});
201+
202+
await client.close();
203+
204+
assertEquals(removeEventListenerCalls.includes('unload'), true);
205+
} finally {
206+
globalThis.removeEventListener = originalRemoveEventListener;
207+
}
208+
});
209+
151210
Deno.test('App runs without errors', async _ => {
152211
const cmd = new Deno.Command('deno', {
153212
args: ['run', '--allow-net=some-domain.com', './test/example.ts'],

0 commit comments

Comments
 (0)