-
-
Notifications
You must be signed in to change notification settings - Fork 31
/
SentryPluginCheckAndroidSdkTest.kt
126 lines (108 loc) · 3.6 KB
/
SentryPluginCheckAndroidSdkTest.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package io.sentry.android.gradle
import kotlin.test.assertTrue
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.Parameterized
@Suppress("FunctionName")
@RunWith(Parameterized::class)
class SentryPluginCheckAndroidSdkTest(
androidGradlePluginVersion: String,
gradleVersion: String
) : BaseSentryPluginTest(androidGradlePluginVersion, gradleVersion) {
@Test
fun `when tracingInstrumentation is disabled does not check sentry-android sdk state`() {
appBuildFile.writeText(
// language=Groovy
"""
plugins {
id "com.android.application"
id "io.sentry.android.gradle"
}
sentry.tracingInstrumentation.enabled = false
${captureSdkState()}
""".trimIndent()
)
// we query the SdkStateHolder intentionally so the build fails, which confirms that the
// service was not registered
val result = runner
.appendArguments("app:tasks")
.buildAndFail()
/* ktlint-disable max-line-length */
assertTrue {
result.output.contains(
Regex(
"""[BuildServiceRegistration with name 'io.sentry.android.gradle.services.SentryModulesService_(\w*)' not found]"""
)
)
}
/* ktlint-enable max-line-length */
}
@Test
fun `when tracingInstrumentation is enabled checks sentry-android sdk state`() {
appBuildFile.writeText(
// language=Groovy
"""
plugins {
id "com.android.application"
id "io.sentry.android.gradle"
}
sentry.tracingInstrumentation.enabled = true
sentry.autoInstallation.enabled = false
sentry.includeProguardMapping = false
${captureSdkState()}
""".trimIndent()
)
val result = runner
.appendArguments("app:assembleDebug")
.build()
assertTrue {
"SENTRY MODULES: [:]" in result.output
}
}
@Test
fun `respects variant configuration`() {
appBuildFile.writeText(
// language=Groovy
"""
plugins {
id "com.android.application"
id "io.sentry.android.gradle"
}
sentry {
tracingInstrumentation.enabled = true
autoInstallation.enabled = false
includeProguardMapping = false
}
configurations {
debugImplementation
releaseImplementation
}
dependencies {
debugImplementation 'io.sentry:sentry-android:5.4.0'
releaseImplementation 'io.sentry:sentry-android:5.5.0'
}
${captureSdkState()}
""".trimIndent()
)
val result = runner
.appendArguments("app:assembleDebug")
.build()
assertTrue {
"SENTRY MODULES: [sentry-android:5.4.0, sentry-android-core:5.4.0, " +
"sentry:5.4.0, sentry-android-ndk:5.4.0]" in result.output
}
}
private fun captureSdkState(): String =
// language=Groovy
"""
import io.sentry.android.gradle.util.*
import io.sentry.android.gradle.services.*
project.gradle.buildFinished {
println(
"SENTRY MODULES: " + BuildServicesKt
.getBuildService(project.gradle.sharedServices, SentryModulesService.class)
.get().modules
)
}
""".trimIndent()
}