Skip to content

Commit 2d62c1a

Browse files
committed
Configure compilations, multiplatform distribution and code coverage
1 parent 6993dd9 commit 2d62c1a

File tree

1 file changed

+42
-3
lines changed

1 file changed

+42
-3
lines changed

build.gradle.kts

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1+
import org.jetbrains.kotlin.gradle.targets.jvm.tasks.KotlinJvmTest
2+
13
plugins {
24
kotlin("multiplatform") version "1.4.30"
5+
jacoco
6+
id("maven-publish")
37
}
48

5-
group = "com.github.petertrr"
9+
group = "io.github.petertrr"
610
version = "0.0.1-SNAPSHOT"
711

812
repositories {
@@ -12,10 +16,45 @@ repositories {
1216
kotlin {
1317
jvm()
1418
sourceSets {
15-
val commonMain by getting {
19+
val commonTest by getting {
1620
dependencies {
17-
21+
implementation(kotlin("test-common"))
22+
implementation(kotlin("test-annotations-common"))
1823
}
1924
}
25+
// platform-specific dependencies are needed to use actual test runners
26+
val jvmTest by getting {
27+
dependencies {
28+
implementation(kotlin("test-junit5"))
29+
}
30+
}
31+
}
32+
}
33+
34+
publishing {
35+
repositories {
36+
mavenLocal()
37+
}
38+
}
39+
40+
// configure Jacoco-based code coverage reports for JVM tests executions
41+
jacoco {
42+
toolVersion = "0.8.6"
43+
}
44+
val jvmTestTask by tasks.named<KotlinJvmTest>("jvmTest") {
45+
configure<JacocoTaskExtension> {
46+
// this is needed to generate jacoco/jvmTest.exec
47+
isEnabled = true
48+
}
49+
}
50+
val jacocoTestReportTask by tasks.register<JacocoReport>("jacocoTestReport") {
51+
executionData(jvmTestTask.extensions.getByType(JacocoTaskExtension::class.java).destinationFile)
52+
additionalSourceDirs(kotlin.sourceSets["commonMain"].kotlin.sourceDirectories)
53+
classDirectories.setFrom(file("$buildDir/classes/kotlin/jvm"))
54+
reports {
55+
xml.isEnabled = true
56+
html.isEnabled = true
2057
}
2158
}
59+
jvmTestTask.finalizedBy(jacocoTestReportTask)
60+
jacocoTestReportTask.dependsOn(jvmTestTask)

0 commit comments

Comments
 (0)