123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- 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) {
- 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",
- ])
- }
- }
|