Skip to content

Commit c5ab352

Browse files
committed
Add: Coverage from Gradle Managed Devices.
1 parent d4a5cb4 commit c5ab352

4 files changed

Lines changed: 21 additions & 1 deletion

File tree

plugin/src/main/kotlin/org/neotech/plugin/rootcoverage/JaCoCoConfiguration.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ internal fun Project.getExecutionDataFileTree(includeUnitTestResults: Boolean, i
6767

6868
// Android Build Tools Plugin 7.1+
6969
buildFolderPatterns.add("outputs/code_coverage/*/connected/*/coverage.ec")
70+
// Gradle Managed Devices
71+
buildFolderPatterns.add("outputs/managed_device_code_coverage/*/coverage.ec")
7072
}
7173
return if(buildFolderPatterns.isEmpty()) {
7274
null

plugin/src/main/kotlin/org/neotech/plugin/rootcoverage/RootCoveragePlugin.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.android.build.api.dsl.BuildType
66
import com.android.build.api.variant.AndroidComponentsExtension
77
import com.android.build.api.variant.Variant
88
import com.android.build.gradle.AppExtension
9+
import com.android.build.gradle.BaseExtension
910
import com.android.build.gradle.LibraryExtension
1011
import com.android.build.gradle.api.SourceKind
1112
import org.gradle.api.GradleException
@@ -176,6 +177,10 @@ class RootCoveragePlugin : Plugin<Project> {
176177
}
177178
if (rootProjectExtension.shouldExecuteAndroidTests() && (buildType.enableAndroidTestCoverage || buildType.isTestCoverageEnabled)) {
178179
dependsOn("$path:connected${name}AndroidTest")
180+
181+
if (subProject.extensions.getByType(BaseExtension::class.java).testOptions.managedDevices.devices.isNotEmpty()) {
182+
dependsOn("$path:allDevices${name}AndroidTest")
183+
}
179184
}
180185

181186
sourceDirectories.from(variant.sources.java?.all)

plugin/src/test/kotlin/org/neotech/plugin/rootcoverage/IntegrationTest.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@ class IntegrationTest(
7676
private fun BuildResult.assertAppCoverageReport() {
7777
assertThat(task(":app:coverageReport")!!.outcome).isEqualTo(TaskOutcome.SUCCESS)
7878

79+
// Assert that the tests have been run on Gradle Managed Devices
80+
assertThat(task(":app:allDevicesDebugAndroidTest")!!.outcome).isEqualTo(TaskOutcome.SUCCESS)
81+
7982
val report = CoverageReport.from(File(projectRoot, "app/build/reports/jacoco.csv"))
8083

8184
report.assertNotInReport("org.neotech.app", "MustBeExcluded")

plugin/src/test/test-fixtures/multi-module/app/build.gradle

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,18 @@ android {
3737
unitTests {
3838
includeAndroidResources = true
3939
}
40+
41+
managedDevices {
42+
devices {
43+
nexusoneapi30 (com.android.build.api.dsl.ManagedVirtualDevice) {
44+
device = "Nexus One"
45+
apiLevel = 30
46+
systemImageSource = "aosp-atd"
47+
}
48+
}
49+
}
4050
}
41-
51+
4252
kotlinOptions {
4353
jvmTarget = "1.8"
4454
}

0 commit comments

Comments
 (0)