107 lines
3.8 KiB
Groovy
107 lines
3.8 KiB
Groovy
apply plugin: "jacoco"
|
|
|
|
jacoco {
|
|
toolVersion = "$jacoco_version"
|
|
}
|
|
|
|
// Force Jacoco Version
|
|
|
|
subprojects {
|
|
configurations.all {
|
|
resolutionStrategy {
|
|
eachDependency { details ->
|
|
if ("org.jacoco" == details.requested.group) {
|
|
details.useVersion "$jacocoVersion"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
project.afterEvaluate { project ->
|
|
|
|
tasks.withType(Test).configureEach {
|
|
jacoco.includeNoLocationClasses = true
|
|
jacoco.excludes = ["jdk.internal.*"]
|
|
}
|
|
|
|
final flavor = "Gplay"
|
|
final buildType = "Debug"
|
|
final variant = "$flavor${buildType.capitalize()}"
|
|
final taskName = "jacocoTest${variant.capitalize()}UnitTestReport"
|
|
|
|
task "$taskName"(type: JacocoReport, dependsOn: "test${variant.capitalize()}UnitTest") {
|
|
|
|
reports {
|
|
csv.required = Boolean.FALSE
|
|
xml.required = Boolean.TRUE
|
|
html.required = Boolean.TRUE
|
|
}
|
|
|
|
final fileFilter = [
|
|
// data binding
|
|
"**/databinding/*",
|
|
"android/databinding/**/*.class",
|
|
"**/android/databinding/*Binding.class",
|
|
"**/android/databinding/*",
|
|
"**/androidx/databinding/*",
|
|
"**/BR.*",
|
|
// android
|
|
"**/R.class",
|
|
"**/R\$*.class",
|
|
"**/BuildConfig.*",
|
|
"**/Manifest*.*",
|
|
"**/*Test*.*",
|
|
"android/**/*.*",
|
|
// kotlin
|
|
"**/*MapperImpl*.*",
|
|
"**/*\$ViewInjector*.*",
|
|
"**/*\$ViewBinder*.*",
|
|
"**/BuildConfig.*",
|
|
"**/*Component*.*",
|
|
"**/*BR*.*",
|
|
"**/Manifest*.*",
|
|
"**/*\$Lambda\$*.*",
|
|
"**/*Companion*.*",
|
|
"**/*Module*.*",
|
|
"**/*Dagger*.*",
|
|
"**/*Hilt*.*",
|
|
"**/*MembersInjector*.*",
|
|
"**/*_MembersInjector.class",
|
|
"**/*_Factory*.*",
|
|
"**/*_Provide*Factory*.*",
|
|
"**/*Extensions*.*",
|
|
// sealed and data classes
|
|
"**/*\$Result.*",
|
|
"**/*\$Result\$*.*",
|
|
// adapters generated by moshi
|
|
"**/*JsonAdapter.*",
|
|
// Hilt
|
|
"**/*Module.kt",
|
|
"**/di/**",
|
|
"dagger.hilt.internal/*",
|
|
"hilt_aggregated_deps/*",
|
|
|
|
"**/*\$Result.*", /* filtering `sealed` and `data` classes */
|
|
"**/*\$Result\$*.*",/* filtering `sealed` and `data` classes */
|
|
"**/*Args*.*", /* filtering Navigation Component generated classes */
|
|
"**/*Directions*.*", /* filtering Navigation Component generated classes */
|
|
"**/*inlined*.class", /* filtering inlined classes */
|
|
"**/composables/**"
|
|
/* INSERT ANY OTHER JUNK YOU WANT FILTERED OUT HERE */]
|
|
|
|
final androidKotlinTree = fileTree(dir: "${project.buildDir}/tmp/kotlin-classes/${variant}", excludes: fileFilter)
|
|
final kotlinTree = fileTree(dir: "${project.buildDir}/classes/kotlin/main", excludes: fileFilter)
|
|
final javacTree = fileTree(dir: "${project.buildDir}/intermediates/javac/${variant}/classes", excludes: fileFilter)
|
|
|
|
final mainSrc = "${project.projectDir}/src/main/java"
|
|
final productFlavorSrc = "${project.projectDir}/src/${flavor}/java"
|
|
final buildTypeSrc = "${project.projectDir}/src/${buildType}/java"
|
|
|
|
sourceDirectories.setFrom files([mainSrc, productFlavorSrc, buildTypeSrc])
|
|
classDirectories.setFrom files([androidKotlinTree, kotlinTree, javacTree])
|
|
executionData.setFrom fileTree(dir: project.buildDir, includes: ["jacoco/test${variant.capitalize()}UnitTest.exec",
|
|
"outputs/unit_test_code_coverage/${variant}UnitTest/test${variant.capitalize()}UnitTest.exec",])
|
|
}
|
|
}
|