From 08ec9f973c770b3dbcd7a1aace6cfcde5138f191 Mon Sep 17 00:00:00 2001 From: Guillermo Mazzola Date: Tue, 13 Jul 2021 17:46:49 +0200 Subject: [PATCH] Fixes `executionData` file getting overridden --- .../jacoco/testkit/JacocoTestKitExtension.kt | 18 +++++++++++++----- .../JaCoCoTestKitPluginFunctionalTest.kt | 6 +++--- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/pl/droidsonroids/gradle/jacoco/testkit/JacocoTestKitExtension.kt b/src/main/kotlin/pl/droidsonroids/gradle/jacoco/testkit/JacocoTestKitExtension.kt index 0af643e..53d8cdc 100644 --- a/src/main/kotlin/pl/droidsonroids/gradle/jacoco/testkit/JacocoTestKitExtension.kt +++ b/src/main/kotlin/pl/droidsonroids/gradle/jacoco/testkit/JacocoTestKitExtension.kt @@ -5,6 +5,7 @@ import org.gradle.api.Task import org.gradle.api.provider.Provider import org.gradle.api.tasks.TaskProvider import org.gradle.testing.jacoco.plugins.JacocoTaskExtension +import org.gradle.testing.jacoco.tasks.JacocoReport import java.io.File open class JacocoTestKitExtension(private val project: Project) { @@ -12,21 +13,28 @@ open class JacocoTestKitExtension(private val project: Project) { fun applyTo(configurationRuntime: String, taskProvider: TaskProvider) { with(project) { + val destinationFile = taskProvider.map { task -> + val extension = task.extensions.getByType(JacocoTaskExtension::class.java) + val file = checkNotNull(extension.destinationFile) { "destinationFile is missing on task $name jacoco extension" } + + File(file.parentFile, "${file.nameWithoutExtension}-gradle-runner.${file.extension}") + } + val jacocoTestKitPropertiesTask = tasks.register( generatePropertiesTaskName(taskProvider.name), GenerateJaCoCoTestKitProperties::class.java ) { it.outputFile = File(buildDir, "testkit/${taskProvider.name}/testkit-gradle.properties") - it.destinationFile.set( - taskProvider.map { - task -> task.extensions.getByType(JacocoTaskExtension::class.java).destinationFile!!.path - }.get() - ) + it.destinationFile.set(destinationFile.get().path) it.jacocoRuntimePath.set(jacocoRuntimePathProvider) } dependencies.add(configurationRuntime, files(testKitDir(taskProvider.name))) taskProvider.configure { it.dependsOn(jacocoTestKitPropertiesTask) } + + tasks.withType(JacocoReport::class.java) + .matching { it.name == "jacoco${taskProvider.name.capitalize()}Report" } + .all { it.executionData(destinationFile) } } } diff --git a/src/test/kotlin/pl/droidsonroids/gradle/jacoco/testkit/JaCoCoTestKitPluginFunctionalTest.kt b/src/test/kotlin/pl/droidsonroids/gradle/jacoco/testkit/JaCoCoTestKitPluginFunctionalTest.kt index fa4ae3b..05bdc22 100644 --- a/src/test/kotlin/pl/droidsonroids/gradle/jacoco/testkit/JaCoCoTestKitPluginFunctionalTest.kt +++ b/src/test/kotlin/pl/droidsonroids/gradle/jacoco/testkit/JaCoCoTestKitPluginFunctionalTest.kt @@ -38,7 +38,7 @@ class JaCoCoTestKitPluginFunctionalTest { .startsWith("\"-javaagent:") .contains("=destfile=") .contains(JacocoPlugin.DEFAULT_JACOCO_VERSION) - .endsWith("test.exec\"") + .endsWith("test-gradle-runner.exec\"") } @Test @@ -119,7 +119,7 @@ class JaCoCoTestKitPluginFunctionalTest { val args = readArgsFromProperties() assertThat(args) - .endsWith("integration.exec\"") + .endsWith("integration-gradle-runner.exec\"") } @Test @@ -134,7 +134,7 @@ class JaCoCoTestKitPluginFunctionalTest { val args = readArgsFromProperties("integrationTest") assertThat(args) - .endsWith("integrationTest.exec\"") + .endsWith("integrationTest-gradle-runner.exec\"") } private fun readArgsFromProperties(taskName: String = "test"): String {