Update file filters (#4640)

This commit is contained in:
Madhur Gupta 2021-09-21 21:07:42 +05:30 committed by GitHub
parent 18b3e50c15
commit 457b03b7cb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -4,58 +4,102 @@ jacoco {
toolVersion = "0.8.7" toolVersion = "0.8.7"
} }
android { tasks.withType(Test) {
testOptions { jacoco.includeNoLocationClasses = true
unitTests.all { jacoco.excludes = ['jdk.internal.*']
jacoco { // see related issue https://github.com/gradle/gradle/issues/5184#issuecomment-457865951
includeNoLocationClasses = true
}
}
}
} }
project.afterEvaluate { project.afterEvaluate {
android.applicationVariants.all { variant -> (android.hasProperty('applicationVariants')
def name = variant.name ? android.'applicationVariants'
def testTaskName = "test${name.capitalize()}UnitTest" : android.'libraryVariants')
.all { variant ->
def variantName = variant.name
def unitTestTask = "test${variantName.capitalize()}UnitTest"
tasks.create(name: "${testTaskName}Coverage", type: JacocoReport, dependsOn: "$testTaskName") { tasks.create(name: "${unitTestTask}Coverage", type: JacocoReport, dependsOn: [
group = "Reporting" "$unitTestTask"
description = "Generate Jacoco coverage reports for the ${name.capitalize()} build." ]) {
group = "Reporting"
description = "Generate Jacoco coverage reports for the ${variantName.capitalize()} build"
def fileFilter = ['**/R.class', reports {
'**/R$*.class', html.enabled = true
'**/*$ViewInjector*.*', xml.enabled = true
'**/*$ViewBinder*.*', }
'**/BuildConfig.*',
'**/Manifest*.*',
'**/*Test*.*',
'android/**/*.*']
//java compiled classes def excludes = [
def javaTree = fileTree( // data binding
dir: "${buildDir}/intermediates/classes/${name}", 'android/databinding/**/*.class',
excludes: fileFilter '**/android/databinding/*Binding.class',
) '**/android/databinding/*',
//kotlin compiled classes '**/androidx/databinding/*',
def kotlinTree = fileTree( '**/BR.*',
dir: "${buildDir}/tmp/kotlin-classes/${name}", // android
excludes: fileFilter '**/R.class',
) '**/R$*.class',
def mainSrc = "${project.projectDir}/src/main/java" '**/BuildConfig.*',
'**/Manifest*.*',
'**/*Test*.*',
'android/**/*.*',
// butterKnife
'**/*$ViewInjector*.*',
'**/*$ViewBinder*.*',
'**/*ViewBinding*.*',
// dagger
'**/*_MembersInjector.class',
'**/Dagger*Component.class',
'**/Dagger*Component$Builder.class',
'**/*Module_*Factory.class',
'**/di/module/*',
'**/*_Factory*.*',
'**/*Module*.*',
'**/*Dagger*.*',
'**/*Hilt*.*',
// 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$*.*'
]
sourceDirectories.setFrom(files([mainSrc])) def javaClasses = fileTree(dir: variant.javaCompileProvider.get().destinationDir,
classDirectories.setFrom(files([javaTree, kotlinTree])) excludes: excludes)
executionData.setFrom(fileTree(dir: "${buildDir}", includes: [ def kotlinClasses = fileTree(dir: "${buildDir}/tmp/kotlin-classes/${variantName}",
"jacoco/${testTaskName}.exec", excludes: excludes)
"outputs/code-coverage/connected/*coverage.ec"
])) classDirectories.setFrom(files([
javaClasses,
kotlinClasses
]))
def variantSourceSets = variant.sourceSets.java.srcDirs.collect { it.path }.flatten()
sourceDirectories.setFrom(project.files(variantSourceSets))
executionData(files([
"$project.buildDir/jacoco/${unitTestTask}.exec"
]))
}
reports {
xml.enabled = true
html.enabled = true
} }
}
}
} }