Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to Exclude generated classes from kotlin jacoco test coverage

I am trying to exclude some generated classes from jacoco coverage report. Which is working fine with groovy but after converting to Kotlin it's not working

tasks.withType<JacocoCoverageVerification> {
afterEvaluate {
     files(classDirectories.files.forEach() {
        fileTree(it).apply {
            exclude("com/generate/**")
        }
    })
}
violationRules {
    rule {
        limit {
            minimum = BigDecimal(0.30)
        }

    }

}

}

tasks.getByName("check")
.dependsOn(tasks.getByName("jacocoTestCoverageVerification"))

But violation rule working perfectly.

like image 932
abin peter Avatar asked Jan 01 '23 00:01

abin peter


1 Answers

It is a limitaion with jacoco plugin on kotlin. Since the classDirectories is not final, we cant go with the old way. We need to use the method classDirectories.setFrom to set the value.

tasks.withType<JacocoCoverageVerification> {
    violationRules {
        rule {
            limit {
                minimum = BigDecimal(0.62)
            }
        }
    }

    afterEvaluate {
        classDirectories.setFrom(files(classDirectories.files.map {
            fileTree(it).apply {
                exclude("com/generate/**")
            }
        }))
    }
}

tasks.withType<JacocoReport> {
    afterEvaluate {
        classDirectories.setFrom(files(classDirectories.files.map {
            fileTree(it).apply {
                exclude("com/generate/**")
            }
        }))
    }
}
like image 93
Suraj Muraleedharan Avatar answered Jan 05 '23 00:01

Suraj Muraleedharan