Skip to content
Merged
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
2b0f3a8
Update
buenaflor Apr 4, 2025
36ab625
Update SentryBridgeTest.apple.kt
buenaflor Apr 16, 2025
afb4c15
Merge branch 'main' into fix/init-with-platforms
buenaflor Apr 16, 2025
37405f6
Update CHANGELOG
buenaflor Apr 16, 2025
4cb4c02
Update
buenaflor Apr 16, 2025
cd56975
Update
buenaflor Apr 17, 2025
0a229ed
Podspec
buenaflor Apr 17, 2025
2c6ba5f
Fix syncing between kmp event and native event
buenaflor Apr 17, 2025
ab925d3
Revert open
buenaflor Apr 17, 2025
423bd6b
Formatting
buenaflor Apr 17, 2025
7fe3bd2
Remove print
buenaflor Apr 17, 2025
5437879
Merge branch 'main' into fix/def-release
buenaflor Apr 23, 2025
2bfdbb9
Update CHANGELOG
buenaflor Apr 24, 2025
aa9d034
Update
buenaflor Apr 24, 2025
4b0646f
Update
buenaflor Apr 24, 2025
5e8aeac
Update
buenaflor Apr 24, 2025
32932d5
Merge branch 'main' into fix/def-release
buenaflor Apr 24, 2025
5091311
Update
buenaflor Apr 24, 2025
de816fd
Update
buenaflor May 2, 2025
b0cc5e7
Update
buenaflor May 2, 2025
756d084
Update
buenaflor May 2, 2025
d763a7f
Merge branch 'main' into fix/def-release
buenaflor May 16, 2025
5b7eb17
Update CHANGELOG.md
buenaflor May 16, 2025
b5cc56d
Update dist impl as well
buenaflor May 16, 2025
6a334f7
Update CHANGELOG
buenaflor May 16, 2025
865d695
Remove old dist
buenaflor May 16, 2025
f659b21
Formatting
buenaflor May 16, 2025
3915445
Merge branch 'main' into fix/def-release
buenaflor May 20, 2025
8e3d796
Merge branch 'main' into fix/def-release
buenaflor Jun 25, 2025
35275a6
Fix apple test
buenaflor Jun 26, 2025
9ba7a99
Formatting
buenaflor Jun 26, 2025
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
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@

- Add `sendDefaultPii` option ([#377](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/377))

### Fixes

- `beforeSend` overriding default release and dist even if it was not set explicitly ([#376](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/376))

### Dependencies

- Bump Java SDK from v8.8.0 to v8.14.0 ([#375](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/375), [#382](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/382), [#387](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/387), [#402](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/402))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,23 @@ import io.sentry.kotlin.multiplatform.CocoaSentryEvent
import io.sentry.kotlin.multiplatform.SentryEvent

internal fun CocoaSentryEvent.applyKmpEvent(kmpEvent: SentryEvent): CocoaSentryEvent {
// Native SDKs may have a default behaviour if no release/dist is set.
// Setting a release/dist (even if it's null) will remove this behaviour,
// so we have to check if the values differ first before setting.
if (releaseName != kmpEvent.release) {
releaseName = kmpEvent.release
}
if (dist != kmpEvent.dist) {
dist = kmpEvent.dist
}
kmpEvent.level?.let { level = it.toCocoaSentryLevel() }
kmpEvent.platform?.let { platform = it }
message = kmpEvent.message?.toCocoaMessage()
logger = kmpEvent.logger
fingerprint = kmpEvent.fingerprint
releaseName = kmpEvent.release
environment = kmpEvent.environment
user = kmpEvent.user?.toCocoaUser()
serverName = kmpEvent.serverName
dist = kmpEvent.dist
breadcrumbs = kmpEvent.breadcrumbs.map { it.toCocoaBreadcrumb() }.toMutableList()
tags = kmpEvent.tags.toMutableMap()
eventId = SentryId(kmpEvent.eventId.toString())
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package io.sentry.kotlin.multiplatform

import io.sentry.kotlin.multiplatform.extensions.applyKmpEvent
import kotlin.test.Test
import kotlin.test.assertFalse

class ApplyKmpEventTest {
@Test
fun `native release is not set if kmp release has same value`() {
val nativeEvent = FakeSentryEvent().apply {
releaseName = "1.0.0"
}
val kmpEvent = SentryEvent().apply {
release = "1.0.0"
}

nativeEvent.applyKmpEvent(kmpEvent)

assertFalse(nativeEvent.wasReleaseSet)
}

@Test
fun `native dist is not set if kmp dist has same value`() {
val nativeEvent = FakeSentryEvent().apply {
dist = "randomDist"
}
val kmpEvent = SentryEvent().apply {
dist = "randomDist"
}

nativeEvent.applyKmpEvent(kmpEvent)

assertFalse(nativeEvent.wasDistSet)
}
}

// init with a SentryLevel as a workaround for:
// Unable to call non-designated initializer as super constructor
private class FakeSentryEvent : CocoaSentryEvent(Internal.Sentry.kSentryLevelFatal) {
Copy link
Contributor Author

@buenaflor buenaflor May 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can only test on cocoa - on java the SentryEvent is final and we don't use a mocking framework yet

var wasReleaseSet = false
var wasDistSet = false

override fun setReleaseName(releaseName: String?) {
super.setReleaseName(releaseName)
wasReleaseSet = true
}

override fun setDist(dist: String?) {
super.setDist(dist)
wasDistSet = true
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,25 @@ import io.sentry.kotlin.multiplatform.JvmSentryEvent
import io.sentry.kotlin.multiplatform.JvmSentryId
import io.sentry.kotlin.multiplatform.SentryEvent

// TODO(buenaflor): properly test this once we introduce a mocking framework
internal fun JvmSentryEvent.applyKmpEvent(kmpEvent: SentryEvent): JvmSentryEvent {
// Native SDKs may have a default behaviour if no release/dist is set.
// Setting a release/dist (even if it's null) will remove this behaviour,
// so we have to check if the values differ first before setting.
if (release != kmpEvent.release) {
release = kmpEvent.release
}
if (dist != kmpEvent.dist) {
dist = kmpEvent.dist
}
level = kmpEvent.level?.toJvmSentryLevel()
message = kmpEvent.message?.toJvmMessage()
logger = kmpEvent.logger
fingerprints = kmpEvent.fingerprint
release = kmpEvent.release
environment = kmpEvent.environment
platform = kmpEvent.platform
user = kmpEvent.user?.toJvmUser()
serverName = kmpEvent.serverName
dist = kmpEvent.dist
breadcrumbs = kmpEvent.breadcrumbs?.map { it.toJvmBreadcrumb() }
eventId = JvmSentryId(kmpEvent.eventId.toString())
tags = kmpEvent.tags
Expand Down
Loading