Skip to content

Commit 8c7e8d9

Browse files
authored
fix(timber): wrong .super() call in SentryTimberTree (#4844)
* Ensure tests cover non-error timber tags * Fix wrong super call * Update Changelog
1 parent 539ca63 commit 8c7e8d9

File tree

3 files changed

+61
-8
lines changed

3 files changed

+61
-8
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
### Fixes
66

77
- [ANR] Removed AndroidTransactionProfiler lock ([#4817](https://github.com/getsentry/sentry-java/pull/4817))
8+
- Fix wrong .super() call in SentryTimberTree ([#4844](https://github.com/getsentry/sentry-java/pull/4844))
89

910
### Improvements
1011

sentry-android-timber/src/main/java/io/sentry/android/timber/SentryTimberTree.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public class SentryTimberTree(
6666

6767
/** Log an info message with optional format args. */
6868
override fun i(message: String?, vararg args: Any?) {
69-
super.d(message, *args)
69+
super.i(message, *args)
7070
logWithSentry(Log.INFO, null, message, *args)
7171
}
7272

sentry-android-timber/src/test/java/io/sentry/android/timber/SentryTimberTreeTest.kt

Lines changed: 59 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.sentry.android.timber
22

3+
import android.util.Log
34
import io.sentry.Breadcrumb
45
import io.sentry.Scopes
56
import io.sentry.SentryLevel
@@ -23,18 +24,19 @@ import timber.log.Timber
2324

2425
class SentryTimberTreeTest {
2526
private class Fixture {
26-
val scopes = mock<Scopes>()
27-
val logs = mock<ILoggerApi>()
28-
29-
init {
30-
whenever(scopes.logger()).thenReturn(logs)
31-
}
27+
lateinit var scopes: Scopes
28+
lateinit var logs: ILoggerApi
3229

3330
fun getSut(
3431
minEventLevel: SentryLevel = SentryLevel.ERROR,
3532
minBreadcrumbLevel: SentryLevel = SentryLevel.INFO,
3633
minLogsLevel: SentryLogLevel = SentryLogLevel.INFO,
37-
): SentryTimberTree = SentryTimberTree(scopes, minEventLevel, minBreadcrumbLevel, minLogsLevel)
34+
): SentryTimberTree {
35+
logs = mock<ILoggerApi>()
36+
scopes = mock<Scopes>()
37+
whenever(scopes.logger()).thenReturn(logs)
38+
return SentryTimberTree(scopes, minEventLevel, minBreadcrumbLevel, minLogsLevel)
39+
}
3840
}
3941

4042
private val fixture = Fixture()
@@ -139,6 +141,56 @@ class SentryTimberTreeTest {
139141
verify(fixture.scopes).captureEvent(check { assertEquals("tag", it.getTag("TimberTag")) })
140142
}
141143

144+
@Test
145+
fun `Tree captures an event with TimberTag tag for debug events`() {
146+
val sut = fixture.getSut(minEventLevel = SentryLevel.INFO)
147+
Timber.plant(sut)
148+
// only available thru static class
149+
Timber.tag("infoTag").i("message")
150+
verify(fixture.scopes).captureEvent(check { assertEquals("infoTag", it.getTag("TimberTag")) })
151+
}
152+
153+
@Test
154+
fun `Tree captures an event with chained tag usage`() {
155+
val sut = fixture.getSut(minEventLevel = SentryLevel.INFO)
156+
Timber.plant(sut)
157+
// only available thru static class
158+
Timber.tag("infoTag").log(Log.INFO, "message")
159+
verify(fixture.scopes).captureEvent(check { assertEquals("infoTag", it.getTag("TimberTag")) })
160+
}
161+
162+
@Test
163+
fun `Tree properly propagates all levels`() {
164+
val levels =
165+
listOf(
166+
Pair(Log.DEBUG, SentryLevel.DEBUG),
167+
Pair(Log.VERBOSE, SentryLevel.DEBUG),
168+
Pair(Log.INFO, SentryLevel.INFO),
169+
Pair(Log.WARN, SentryLevel.WARNING),
170+
Pair(Log.ERROR, SentryLevel.ERROR),
171+
Pair(Log.ASSERT, SentryLevel.FATAL),
172+
)
173+
174+
for (level in levels) {
175+
Timber.uprootAll()
176+
177+
val logLevel = level.first
178+
val sentryLevel = level.second
179+
180+
val sut = fixture.getSut(minEventLevel = sentryLevel)
181+
Timber.plant(sut)
182+
// only available thru static class
183+
Timber.tag("tag").log(logLevel, "message")
184+
verify(fixture.scopes)
185+
.captureEvent(
186+
check {
187+
assertEquals("tag", it.getTag("TimberTag"))
188+
assertEquals(sentryLevel, it.level)
189+
}
190+
)
191+
}
192+
}
193+
142194
@Test
143195
fun `Tree captures an event without TimberTag tag`() {
144196
val sut = fixture.getSut()

0 commit comments

Comments
 (0)