Skip to content

Commit 8f7bb17

Browse files
author
Marcel Schnelle
authored
Redeclare Jacoco APIs that were renamed in Gradle 5.0 (#133)
1 parent c354352 commit 8f7bb17

File tree

2 files changed

+29
-9
lines changed
  • android-junit5-tests/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5
  • android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/tasks

2 files changed

+29
-9
lines changed

android-junit5-tests/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/PluginSpec.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ class PluginSpec : Spek({
208208
// Expected items: "src/main/java" & "src/<TypeName>/java"
209209
val sourceDirs = project.tasks.get<AndroidJUnit5JacocoReport>(
210210
"jacocoTestReport${buildType.capitalize()}")
211-
.sourceDirectories
211+
.sourceDirectories!!
212212
.map { it.absolutePath }
213213

214214
val mainDir = sourceDirs.find { it.endsWith("src/main/java") }
@@ -224,7 +224,7 @@ class PluginSpec : Spek({
224224
// Expected omissions: "src/test/java" & "src/test<TypeName>/java"
225225
val sourceDirs = project.tasks.get<AndroidJUnit5JacocoReport>(
226226
"jacocoTestReport${buildType.capitalize()}")
227-
.sourceDirectories.asPath
227+
.sourceDirectories!!.asPath
228228

229229
assertAll(
230230
"Mismatch! Actual dirs: $sourceDirs",
@@ -239,7 +239,7 @@ class PluginSpec : Spek({
239239
// Expected omissions: "classes/test"
240240
val classDirs = project.tasks.get<AndroidJUnit5JacocoReport>(
241241
"jacocoTestReport${buildType.capitalize()}")
242-
.classDirectories.asPath
242+
.classDirectories!!.asPath
243243

244244
assertThat(classDirs).doesNotContain("classes/test")
245245
}
@@ -384,7 +384,7 @@ class PluginSpec : Spek({
384384
// * SecondFile.class (through rule)
385385
val fileNames = project.tasks.get<AndroidJUnit5JacocoReport>(
386386
"jacocoTestReportDebug")
387-
.classDirectories.asFileTree.files
387+
.classDirectories!!.asFileTree.files
388388
.map { it.name }
389389

390390
assertThat(fileNames)
@@ -403,7 +403,7 @@ class PluginSpec : Spek({
403403
// * SecondFile.class (through rule)
404404
val fileNames = project.tasks.get<AndroidJUnit5JacocoReport>(
405405
"jacocoTestReportRelease")
406-
.classDirectories.asFileTree.files
406+
.classDirectories!!.asFileTree.files
407407
.map { it.name }
408408

409409
assertThat(fileNames)
@@ -427,7 +427,7 @@ class PluginSpec : Spek({
427427
it("doesn't exclude R.class anymore for the $buildType build type") {
428428
val fileNames = project.tasks.get<AndroidJUnit5JacocoReport>(
429429
"jacocoTestReport${buildType.capitalize()}")
430-
.classDirectories.asFileTree.files
430+
.classDirectories!!.asFileTree.files
431431
.map { it.name }
432432

433433
assertThat(fileNames).contains("R.class")

android-junit5/src/main/kotlin/de/mannodermaus/gradle/plugins/junit5/tasks/Jacoco.kt

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,26 @@ open class AndroidJUnit5JacocoReport : JacocoReport() {
3838
}
3939
}
4040

41+
/*
42+
* Gradle 5.0 changed the return type of these methods from FileCollection to ConfigurableFileCollection.
43+
* By explicitly re-declaring them here with the old return type, the binary incompatibility is bridged.
44+
*/
45+
46+
@Suppress("RedundantOverride")
47+
override fun getExecutionData(): FileCollection? {
48+
return super.getExecutionData()
49+
}
50+
51+
@Suppress("RedundantOverride")
52+
override fun getClassDirectories(): FileCollection? {
53+
return super.getClassDirectories()
54+
}
55+
56+
@Suppress("RedundantOverride")
57+
override fun getSourceDirectories(): FileCollection? {
58+
return super.getSourceDirectories()
59+
}
60+
4161
/**
4262
* Configuration closure for an Android JUnit5 Jacoco Report task.
4363
*/
@@ -88,9 +108,9 @@ open class AndroidJUnit5JacocoReport : JacocoReport() {
88108

89109
project.logger.junit5Info(
90110
"Assembled Jacoco Code Coverage for JUnit 5 Task '${testTask.name}':")
91-
project.logger.junit5Info("|__ Execution Data: ${reportTask.executionData.asPath}")
92-
project.logger.junit5Info("|__ Source Dirs: ${reportTask.sourceDirectories.asPath}")
93-
project.logger.junit5Info("|__ Class Dirs: ${reportTask.classDirectories.asPath}")
111+
project.logger.junit5Info("|__ Execution Data: ${reportTask.executionData?.asPath}")
112+
project.logger.junit5Info("|__ Source Dirs: ${reportTask.sourceDirectories?.asPath}")
113+
project.logger.junit5Info("|__ Class Dirs: ${reportTask.classDirectories?.asPath}")
94114

95115
// Hook into the main Jacoco task
96116
val defaultJacocoTask = project.tasks.maybeCreate(

0 commit comments

Comments
 (0)