Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions Tests/SentryTests/SentrySDKTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,50 @@ class SentrySDKTests: XCTestCase {

assertHubScopeNotChanged()
}

/// When events don't have debug meta the backend can't symbolicate the stack trace of events.
/// This is a regression test for https://github.com/getsentry/sentry-cocoa/issues/5334
func testCaptureNonFatalEvent_HasDebugMeta() throws {
// Arrange
SentrySDK.start { options in
options.dsn = TestConstants.dsnAsString(username: "testCaptureNonFatalEvent_HasDebugMeta")
}

let fileManager = try XCTUnwrap(SentrySDKInternal.currentHub().getClient()?.fileManager)
fileManager.deleteAllEnvelopes()

defer {
fileManager.deleteAllEnvelopes()
}

// Act
SentrySDK.capture(message: "Test message")
// Ensures that the capture envelope is written to disk before we read it.
SentrySDK.flush(timeout: 0.1)

// Assert
let eventEnvelopeItems = try fileManager.getAllEnvelopes().map { fileContent in
return try XCTUnwrap(SentrySerialization.envelope(with: fileContent.contents))
}.flatMap { envelope in
return envelope.items.filter { $0.header.type == SentryEnvelopeItemTypeEvent }
}

XCTAssertEqual(eventEnvelopeItems.count, 1, "Expected exactly one event envelope item, but got \(eventEnvelopeItems.count)")
let eventEnvelopeItem = try XCTUnwrap(eventEnvelopeItems.first)

let event = try XCTUnwrap( SentryEventDecoder.decodeEvent(jsonData: eventEnvelopeItem.data))

let debugMetas = try XCTUnwrap(event.debugMeta, "Expected event to have debug meta but got nil")
// During local testing we got 6 debug metas, but to avoid flakiness in CI we only check for 3.
XCTAssertGreaterThanOrEqual(debugMetas.count, 3, "Expected debug meta to have at least 3 items, but got \(debugMetas.count)")

for debugMeta in debugMetas {
XCTAssertEqual(debugMeta.type, "macho")
XCTAssertNotNil(debugMeta.debugID)
XCTAssertNotNil(debugMeta.imageAddress)
XCTAssertNotNil(debugMeta.imageSize)
}
}
}

extension SentrySDKTests {
Expand Down
Loading