Skip to content

Commit 824231e

Browse files
author
Marcel Schnelle
authored
Enable Jacoco Code Previews (#91)
* Add tests that expose incorrect configuration of Jacoco dirs * Remove redundant excludedSources from DSL & thereby enable Jacoco code preview
1 parent cfb0a11 commit 824231e

File tree

4 files changed

+24
-48
lines changed

4 files changed

+24
-48
lines changed

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

Lines changed: 19 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,8 @@ class PluginSpec : Spek({
519519
on("assembling the $buildType task") {
520520
val project = testProjectBuilder.buildAndEvaluate()
521521
val projectConfig = ProjectConfig(project)
522-
val task = project.tasks.get<AndroidJUnit5UnitTest>("junitPlatformTest${buildType.capitalize()}")
522+
val task = project.tasks.get<AndroidJUnit5UnitTest>(
523+
"junitPlatformTest${buildType.capitalize()}")
523524
val folders = argument(task, "--scan-class-path")?.split(":") ?: listOf()
524525

525526
val variant = projectConfig.unitTestVariants.find { it.name == buildType }
@@ -556,13 +557,30 @@ class PluginSpec : Spek({
556557
.contains("jacocoTestReport${buildType.capitalize()}")
557558
}
558559

560+
it("includes Main-scoped source dirs for the $buildType build type") {
561+
// Expected items: "src/main/java" & "src/<TypeName>/java"
562+
val sourceDirs = project.tasks.get<AndroidJUnit5JacocoReport>(
563+
"jacocoTestReport${buildType.capitalize()}")
564+
.sourceDirectories
565+
.map { it.absolutePath }
566+
567+
val mainDir = sourceDirs.find { it.endsWith("src/main/java") }
568+
val typeDir = sourceDirs.find { it.endsWith("src/$buildType/java") }
569+
assertAll(
570+
"Mismatch! Actual dirs: $sourceDirs",
571+
{ assertThat(mainDir).withFailMessage("main").isNotNull() },
572+
{ assertThat(typeDir).withFailMessage(buildType).isNotNull() }
573+
)
574+
}
575+
559576
it("doesn't include Test-scoped source dirs for the $buildType build type") {
560577
// Expected omissions: "src/test/java" & "src/test<TypeName>/java"
561578
val sourceDirs = project.tasks.get<AndroidJUnit5JacocoReport>(
562579
"jacocoTestReport${buildType.capitalize()}")
563580
.sourceDirectories.asPath
564581

565582
assertAll(
583+
"Mismatch! Actual dirs: $sourceDirs",
566584
{ assertThat(sourceDirs).doesNotContain("src/test/java") },
567585
{
568586
assertThat(sourceDirs).doesNotContain("src/test${buildType.capitalize()}/java")
@@ -706,7 +724,6 @@ class PluginSpec : Spek({
706724
project.android.testOptions.junitPlatform {
707725
jacocoOptions {
708726
excludedClasses.add("Second*.class")
709-
excludedSources.add("AnnoyingFile.java")
710727
}
711728
}
712729

@@ -748,42 +765,6 @@ class PluginSpec : Spek({
748765
"FirstFile.class",
749766
"SecondFile.class")
750767
}
751-
752-
it("honors the debug source exclusion rules") {
753-
// Should be included:
754-
// * OkFile.java
755-
// Should be excluded:
756-
// * AnnoyingFile.java (through rule)
757-
// * ReleaseOnlyFile.java (other source set)
758-
val fileNames = project.tasks.get<AndroidJUnit5JacocoReport>(
759-
"jacocoTestReportDebug")
760-
.sourceDirectories.asFileTree.files
761-
.map { it.name }
762-
763-
assertThat(fileNames)
764-
.contains("OkFile.java")
765-
.doesNotContain(
766-
"AnnoyingFile.java",
767-
"ReleaseOnlyFile.java")
768-
}
769-
770-
it("honors the release source exclusion rules") {
771-
// Should be included:
772-
// * OkFile.java
773-
// * ReleaseOnly.java
774-
// Should be excluded:
775-
// * AnnoyingFile.java (through rule)
776-
val fileNames = project.tasks.get<AndroidJUnit5JacocoReport>(
777-
"jacocoTestReportRelease")
778-
.sourceDirectories.asFileTree.files
779-
.map { it.name }
780-
781-
assertThat(fileNames)
782-
.contains(
783-
"OkFile.java",
784-
"ReleaseOnlyFile.java")
785-
.doesNotContain("AnnoyingFile.java")
786-
}
787768
}
788769

789770
on("replacing class rules") {

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ fun assertAll(vararg assertions: () -> Unit) {
4343
Assertions.assertAll(*assertions.map { Executable { it() } }.toTypedArray())
4444
}
4545

46+
fun assertAll(heading: String, vararg assertions: () -> Unit) {
47+
Assertions.assertAll(heading, *assertions.map { Executable { it() } }.toTypedArray())
48+
}
49+
4650
/* Extensions */
4751

4852
fun Project.evaluate() {

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

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -681,14 +681,6 @@ class JacocoOptions {
681681

682682
fun excludedClasses(vararg classes: String) = excludedClasses.addAll(classes)
683683

684-
/**
685-
* List of source name patterns that should be excluded from being processed by Jacoco.
686-
* By default, this is an empty list
687-
*/
688-
var excludedSources = mutableListOf<String>()
689-
690-
fun excludedSources(vararg sources: String) = excludedSources.addAll(sources)
691-
692684
class Report {
693685

694686
operator fun invoke(config: Report.() -> Unit) {

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ open class AndroidJUnit5JacocoReport : JacocoReport() {
7676
// using the sum of all DirectoryProviders' outputs as a foundation:
7777
reportTask.classDirectories = directoryProviders.mainClassDirectories()
7878
.toFileCollectionExcluding(junit5Jacoco.excludedClasses)
79-
reportTask.sourceDirectories = directoryProviders.mainSourceDirectories()
80-
.toFileCollectionExcluding(junit5Jacoco.excludedSources)
79+
reportTask.sourceDirectories = project.files(directoryProviders.mainSourceDirectories())
8180

8281
project.logger.junit5Info(
8382
"Assembled Jacoco Code Coverage for JUnit 5 Task '${testTask.name}':")

0 commit comments

Comments
 (0)