Skip to content

Commit 72fb7d6

Browse files
committed
Generate Jacoco XML reports for JVM platform
1 parent b391803 commit 72fb7d6

File tree

3 files changed

+26
-4
lines changed

3 files changed

+26
-4
lines changed

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
projectVersion=1.9.2
2-
projectChangelog=Disable browser JS testing
1+
projectVersion=1.10.0
2+
projectChangelog=The plugin now automatically generates Jacoco XML reports for JVM platform
33

44
projectDescription=A Gradle plugin that simplifies the creation of %type% multiplatform Kotlin projects.
55

multigradle/src/main/kotlin/net/pearx/multigradle/util/ProjectHelper.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@
88
package net.pearx.multigradle.util
99

1010
import org.gradle.api.Project
11+
import org.gradle.api.file.FileCollection
1112
import org.gradle.kotlin.dsl.*
1213
import org.jetbrains.dokka.gradle.DokkaTask
14+
import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
1315

1416
internal fun Project.configureDokka(dokka: DokkaTask, outputFormat: String, outputName: String, vararg platformList: String) {
1517
with(dokka) {
@@ -23,4 +25,8 @@ internal fun Project.configureDokka(dokka: DokkaTask, outputFormat: String, outp
2325
}
2426
}
2527
}
28+
}
29+
30+
internal fun Project.findSourceDirectories(endsWith: String): FileCollection {
31+
return files(the<KotlinProjectExtension>().sourceSets.filter { it.name.endsWith(endsWith) }.map { it.kotlin.sourceDirectories }).filter { it.isDirectory }
2632
}

multigradle/src/main/kotlin/net/pearx/multigradle/util/platform/JvmPlatform.kt

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ import org.gradle.api.tasks.testing.Test
1616
import org.gradle.kotlin.dsl.*
1717
import org.gradle.testing.jacoco.plugins.JacocoPlugin
1818
import org.gradle.testing.jacoco.plugins.JacocoPluginExtension
19+
import org.gradle.testing.jacoco.plugins.JacocoTaskExtension
20+
import org.gradle.testing.jacoco.tasks.JacocoReport
1921
import org.jetbrains.dokka.gradle.DokkaTask
22+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2023

2124
class JvmPlatformConfig(project: Project) : PlatformConfig(project) {
2225
lateinit var junitJupiterVersion: String
@@ -73,9 +76,22 @@ val JvmPlatform = platform("jvm", listOf("jvmTest"), { JvmPlatformConfig(it) })
7376
}
7477

7578
tasks {
76-
named<Test>("jvmTest") {
77-
reports.junitXml.isEnabled = true
79+
val jvmTest by existing(Test::class)
80+
val jacocoJvmTestReport by registering(JacocoReport::class)
81+
82+
jacocoJvmTestReport.configure {
83+
dependsOn(jvmTest)
84+
reports {
85+
xml.isEnabled = true
86+
}
87+
executionData(jvmTest.get().the<JacocoTaskExtension>().destinationFile!!)
88+
sourceDirectories.from(findSourceDirectories("Main"))
89+
classDirectories.from(tasks.getByName<KotlinCompile>("compileKotlinJvm").destinationDir)
90+
}
91+
jvmTest.configure {
92+
finalizedBy(jacocoJvmTestReport)
7893
useJUnitPlatform()
94+
reports.junitXml.isEnabled = true
7995
}
8096
}
8197
}

0 commit comments

Comments
 (0)