Skip to content

Commit cf6e7dd

Browse files
committed
Prevent Jacoco convention plugins to enable test coverage on release buildTypes
leading to "debuggable" release builds.
1 parent b060fd0 commit cf6e7dd

File tree

3 files changed

+22
-20
lines changed

3 files changed

+22
-20
lines changed

build-logic/convention/src/main/kotlin/AndroidApplicationJacocoConventionPlugin.kt

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,16 @@ import org.gradle.api.Plugin
2121
import org.gradle.api.Project
2222
import org.gradle.kotlin.dsl.apply
2323
import org.gradle.kotlin.dsl.getByType
24+
import org.gradle.testing.jacoco.plugins.JacocoPlugin
2425

2526
class AndroidApplicationJacocoConventionPlugin : Plugin<Project> {
2627
override fun apply(target: Project) {
2728
with(target) {
28-
apply(plugin = "jacoco")
29-
30-
val androidExtension = extensions.getByType<ApplicationExtension>()
31-
32-
androidExtension.buildTypes.configureEach {
33-
enableAndroidTestCoverage = true
34-
enableUnitTestCoverage = true
35-
}
36-
37-
configureJacoco(extensions.getByType<ApplicationAndroidComponentsExtension>())
29+
apply<JacocoPlugin>()
30+
configureJacoco(
31+
commonExtension = extensions.getByType<ApplicationExtension>(),
32+
androidComponentsExtension = extensions.getByType<ApplicationAndroidComponentsExtension>(),
33+
)
3834
}
3935
}
4036
}

build-logic/convention/src/main/kotlin/AndroidLibraryJacocoConventionPlugin.kt

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,16 @@ import org.gradle.api.Plugin
2121
import org.gradle.api.Project
2222
import org.gradle.kotlin.dsl.apply
2323
import org.gradle.kotlin.dsl.getByType
24+
import org.gradle.testing.jacoco.plugins.JacocoPlugin
2425

2526
class AndroidLibraryJacocoConventionPlugin : Plugin<Project> {
2627
override fun apply(target: Project) {
2728
with(target) {
28-
apply(plugin = "jacoco")
29-
30-
val androidExtension = extensions.getByType<LibraryExtension>()
31-
32-
androidExtension.buildTypes.configureEach {
33-
enableAndroidTestCoverage = true
34-
enableUnitTestCoverage = true
35-
}
36-
37-
configureJacoco(extensions.getByType<LibraryAndroidComponentsExtension>())
29+
apply<JacocoPlugin>()
30+
configureJacoco(
31+
commonExtension = extensions.getByType<LibraryExtension>(),
32+
androidComponentsExtension = extensions.getByType<LibraryAndroidComponentsExtension>(),
33+
)
3834
}
3935
}
4036
}

build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/Jacoco.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@
1717
package com.google.samples.apps.nowinandroid
1818

1919
import com.android.build.api.artifact.ScopedArtifact
20+
import com.android.build.api.dsl.BuildType
21+
import com.android.build.api.dsl.CommonExtension
2022
import com.android.build.api.variant.AndroidComponentsExtension
2123
import com.android.build.api.variant.ScopedArtifacts
2224
import com.android.build.api.variant.SourceDirectories
25+
import org.gradle.api.NamedDomainObjectContainer
2326
import org.gradle.api.Project
2427
import org.gradle.api.file.Directory
2528
import org.gradle.api.file.RegularFile
@@ -59,8 +62,15 @@ private fun String.capitalize() = replaceFirstChar {
5962
* tests on CI using a different Github Action or an external device farm.
6063
*/
6164
internal fun Project.configureJacoco(
65+
commonExtension: CommonExtension,
6266
androidComponentsExtension: AndroidComponentsExtension<*, *, *>,
6367
) {
68+
69+
commonExtension.buildTypes.named("debug") {
70+
enableAndroidTestCoverage = true
71+
enableUnitTestCoverage = true
72+
}
73+
6474
configure<JacocoPluginExtension> {
6575
toolVersion = libs.findVersion("jacoco").get().toString()
6676
}

0 commit comments

Comments
 (0)