Skip to content

Commit 1b33e78

Browse files
committed
Update to the newest version of Junit 5 and Jacoco
1 parent a6ae07d commit 1b33e78

File tree

1 file changed

+49
-39
lines changed

1 file changed

+49
-39
lines changed

kotlin-guiced.gradle.kts

+49-39
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import org.gradle.api.publish.maven.MavenPublication
22
import org.gradle.api.tasks.bundling.Jar
3+
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
4+
import org.gradle.api.tasks.testing.logging.TestLogEvent
35
import org.gradle.api.tasks.wrapper.Wrapper
4-
import org.junit.platform.console.options.Details
56

67
buildscript {
78
repositories {
@@ -14,10 +15,10 @@ buildscript {
1415
dependencies {
1516
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${property("kotlin.version")}")
1617
classpath("com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4")
17-
classpath("org.junit.platform:junit-platform-gradle-plugin:1.1.0-M1")
1818
}
1919
}
2020
plugins {
21+
`lifecycle-base`
2122
jacoco
2223
}
2324
apply {
@@ -35,15 +36,14 @@ allprojects {
3536
}
3637
}
3738

38-
val jacocoTestResultTaskName = "jacocoJunit5TestReport"
39+
val jacocoTestResultTaskName = "jacocoTestReport"
3940

4041
subprojects {
4142
apply {
4243
plugin("com.jfrog.bintray")
4344
plugin("kotlin")
4445
plugin("maven-publish")
4546
plugin("java-library")
46-
plugin("org.junit.platform.gradle.plugin")
4747
plugin("jacoco")
4848
}
4949

@@ -70,36 +70,39 @@ subprojects {
7070
"testCompile"(junitJupiter("junit-jupiter-api"))
7171
"testCompile"(junitJupiter("junit-jupiter-params"))
7272
"testRuntime"(junitJupiter("junit-jupiter-engine"))
73-
"testRuntime"(create(group = "org.junit.platform", name = "junit-platform-launcher", version = "1.1.0-M1"))
73+
"testRuntime"(create(group = "org.junit.platform", name = "junit-platform-launcher", version = "1.3.1"))
7474
}
7575

76-
junitPlatform {
77-
details = Details.VERBOSE
76+
tasks.withType<Test>().configureEach {
77+
extensions.configure(typeOf<JacocoTaskExtension>()) {
78+
/*
79+
* Fix for Jacoco breaking Build Cache support.
80+
* https://github.com/gradle/gradle/issues/5269
81+
*/
82+
isAppend = false
83+
}
7884

79-
filters {
80-
includeClassNamePatterns(".*Test", ".*Tests", ".*Spec")
85+
useJUnitPlatform {
86+
filter {
87+
includeTestsMatching("*Test")
88+
includeTestsMatching("*Tests")
89+
includeTestsMatching("*Spec")
90+
}
8191
}
82-
}
8392

84-
// Below, configure jacoco code coverage on all Junit 5 tests.
85-
val junitPlatformTest: JavaExec by tasks
93+
testLogging {
94+
events(TestLogEvent.FAILED, TestLogEvent.PASSED, TestLogEvent.SKIPPED, TestLogEvent.STARTED)
95+
displayGranularity = 0
96+
showExceptions = true
97+
showCauses = true
98+
showStackTraces = true
99+
exceptionFormat = TestExceptionFormat.FULL
100+
}
86101

87-
jacoco {
88-
applyTo(junitPlatformTest)
102+
reports.junitXml.destination = file("${rootProject.buildDir}/test-results/${project.name}")
89103
}
90104

91-
val sourceSets = java.sourceSets
92-
93-
task<JacocoReport>(jacocoTestResultTaskName) {
94-
group = LifecycleBasePlugin.VERIFICATION_GROUP
95-
description = "Generates code coverage report for the ${junitPlatformTest.name} task."
96-
97-
executionData(junitPlatformTest)
98-
dependsOn(junitPlatformTest)
99-
100-
sourceSets(sourceSets["main"])
101-
sourceDirectories = files(sourceSets["main"].allSource.srcDirs)
102-
classDirectories = files(sourceSets["main"].output)
105+
tasks.withType<JacocoReport>().configureEach {
103106
reports {
104107
html.isEnabled = true
105108
xml.isEnabled = true
@@ -125,12 +128,20 @@ subprojects {
125128
}
126129
}
127130

128-
val jacocoRootReport = task<JacocoReport>("jacocoRootReport") {
131+
val jacocoRootReport = tasks.register("jacocoRootReport", JacocoReport::class.java) {
129132
group = LifecycleBasePlugin.VERIFICATION_GROUP
130133
description = "Generates code coverage report for all sub-projects."
131134

132135
val jacocoReportTasks =
133-
subprojects.map { it.tasks[jacocoTestResultTaskName] as JacocoReport }
136+
subprojects
137+
.asSequence()
138+
.filter {
139+
// Filter out source sets that don't have tests in them
140+
// Otherwise, Jacoco tries to generate coverage data for tests that don't exist
141+
!it.java.sourceSets["test"].allSource.isEmpty
142+
}
143+
.map { it.tasks[jacocoTestResultTaskName] as JacocoReport }
144+
.toList()
134145
dependsOn(jacocoReportTasks)
135146

136147
val allExecutionData = jacocoReportTasks.map { it.executionData }
@@ -143,9 +154,10 @@ val jacocoRootReport = task<JacocoReport>("jacocoRootReport") {
143154

144155
subprojects.forEach { testedProject ->
145156
val sourceSets = testedProject.java.sourceSets
146-
this@task.additionalSourceDirs = this@task.additionalSourceDirs?.plus(files(sourceSets["main"].allSource.srcDirs))
147-
this@task.sourceDirectories += files(sourceSets["main"].allSource.srcDirs)
148-
this@task.classDirectories += files(sourceSets["main"].output)
157+
this@register.additionalSourceDirs =
158+
this@register.additionalSourceDirs?.plus(files(sourceSets["main"].allSource.srcDirs))
159+
this@register.sourceDirectories += files(sourceSets["main"].allSource.srcDirs)
160+
this@register.classDirectories += files(sourceSets["main"].output)
149161
}
150162

151163
reports {
@@ -160,27 +172,25 @@ allprojects {
160172
pluginManager.withPlugin("jacoco") {
161173
// If this project has the plugin applied, configure the tool version.
162174
jacoco {
163-
toolVersion = "0.8.1"
175+
toolVersion = "0.8.2"
164176
}
165177
}
166178
}
167179

168180
configurations.create(PUBLISHED_CONFIGURATION_NAME)
169181

182+
tasks.named(LifecycleBasePlugin.CHECK_TASK_NAME).configure {
183+
dependsOn(jacocoRootReport)
184+
}
185+
170186
tasks.withType<Wrapper>().configureEach {
171187
description = "Configure the version of gradle to download and use"
172188
gradleVersion = "4.10.2"
173189
distributionType = Wrapper.DistributionType.ALL
174190
}
175191

176192
fun DependencyHandler.junitJupiter(name: String) =
177-
create(group = "org.junit.jupiter", name = name, version = "5.1.0-M1")
178-
179-
/**
180-
* Configures the [junitPlatform][org.junit.platform.gradle.plugin.JUnitPlatformExtension] project extension.
181-
*/
182-
fun Project.`junitPlatform`(configure: org.junit.platform.gradle.plugin.JUnitPlatformExtension.() -> Unit) =
183-
extensions.configure("junitPlatform", configure)
193+
create(group = "org.junit.jupiter", name = name, version = "5.3.1")
184194

185195
/**
186196
* Retrieves or configures the [bintray][com.jfrog.bintray.gradle.BintrayExtension] project extension.

0 commit comments

Comments
 (0)