Skip to content

Commit c324d33

Browse files
authored
ci: Add jacoco-convention.gradle.kts (#22)
1 parent 4b34be6 commit c324d33

File tree

4 files changed

+52
-24
lines changed

4 files changed

+52
-24
lines changed

build.gradle.kts

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import io.gitlab.arturbosch.detekt.Detekt
44
import org.jetbrains.kotlin.gradle.targets.jvm.tasks.KotlinJvmTest
55

66
plugins {
7-
alias(libs.plugins.kotlin.multiplatform)
7+
kotlin("multiplatform")
8+
id("jacoco-convention")
89
alias(libs.plugins.detekt)
9-
jacoco
1010
}
1111

1212
configureVersioning()
@@ -65,25 +65,3 @@ dependencies {
6565
tasks.withType<Detekt> {
6666
tasks.getByName("check").dependsOn(this)
6767
}
68-
69-
// configure Jacoco-based code coverage reports for JVM tests executions
70-
jacoco {
71-
toolVersion = "0.8.7"
72-
}
73-
val jvmTestTask by tasks.named<KotlinJvmTest>("jvmTest") {
74-
configure<JacocoTaskExtension> {
75-
// this is needed to generate jacoco/jvmTest.exec
76-
isEnabled = true
77-
}
78-
}
79-
val jacocoTestReportTask by tasks.register<JacocoReport>("jacocoTestReport") {
80-
executionData(jvmTestTask.extensions.getByType(JacocoTaskExtension::class.java).destinationFile)
81-
additionalSourceDirs(kotlin.sourceSets["commonMain"].kotlin.sourceDirectories)
82-
classDirectories.setFrom(file("$buildDir/classes/kotlin/jvm/main"))
83-
reports {
84-
xml.required.set(true)
85-
html.required.set(true)
86-
}
87-
}
88-
jvmTestTask.finalizedBy(jacocoTestReportTask)
89-
jacocoTestReportTask.dependsOn(jvmTestTask)

buildSrc/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ repositories {
77
mavenCentral()
88
}
99

10+
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
1011
dependencies {
1112
implementation("org.ajoberstar.reckon:reckon-gradle:0.13.1")
1213
implementation("org.jetbrains.dokka:dokka-gradle-plugin:1.6.10")
1314
implementation("io.github.gradle-nexus:publish-plugin:1.1.0")
15+
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:${libs.findVersion("kotlin").get()}")
1416
}

buildSrc/settings.gradle.kts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
enableFeaturePreview("VERSION_CATALOGS")
2+
3+
dependencyResolutionManagement {
4+
versionCatalogs {
5+
create("libs") {
6+
from(files("../gradle/libs.versions.toml"))
7+
}
8+
}
9+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import org.gradle.api.tasks.testing.Test
2+
import org.gradle.kotlin.dsl.named
3+
import org.gradle.kotlin.dsl.getValue
4+
import org.gradle.kotlin.dsl.provideDelegate
5+
import org.gradle.kotlin.dsl.register
6+
import org.gradle.testing.jacoco.plugins.JacocoTaskExtension
7+
import org.gradle.testing.jacoco.tasks.JacocoReport
8+
9+
plugins {
10+
kotlin("multiplatform")
11+
jacoco
12+
}
13+
14+
kotlin {
15+
// to register `KotlinJvmTest` tasks before configuring Jacoco
16+
jvm()
17+
}
18+
19+
// configure Jacoco-based code coverage reports for JVM tests executions
20+
jacoco {
21+
toolVersion = "0.8.7"
22+
}
23+
val jvmTestTask by tasks.named<Test>("jvmTest") {
24+
configure<JacocoTaskExtension> {
25+
// this is needed to generate jacoco/jvmTest.exec
26+
isEnabled = true
27+
}
28+
}
29+
val jacocoTestReportTask by tasks.register<JacocoReport>("jacocoTestReport") {
30+
executionData(jvmTestTask.extensions.getByType(JacocoTaskExtension::class.java).destinationFile)
31+
additionalSourceDirs(kotlin.sourceSets["commonMain"].kotlin.sourceDirectories)
32+
classDirectories.setFrom(file("$buildDir/classes/kotlin/jvm/main"))
33+
reports {
34+
xml.required.set(true)
35+
html.required.set(true)
36+
}
37+
}
38+
jvmTestTask.finalizedBy(jacocoTestReportTask)
39+
jacocoTestReportTask.dependsOn(jvmTestTask)

0 commit comments

Comments
 (0)