Loading app/build.gradle +49 −18 Original line number Diff line number Diff line Loading @@ -66,6 +66,38 @@ def jacocoFileFilter = [ '**/*Hilt*.*' ] def jacocoCoverageProjects = [ project(':app'), project(':data'), project(':domain'), ] def collectJacocoClassDirectories = { Project module, String variantName -> return [ module.fileTree("${module.buildDir}/intermediates/javac/${variantName}/classes") { exclude jacocoFileFilter }, module.fileTree("${module.buildDir}/tmp/kotlin-classes/${variantName}") { exclude jacocoFileFilter } ] } def collectJacocoSourceDirectories = { Project module -> return [ "${module.projectDir}/src/main/java", "${module.projectDir}/src/main/kotlin", ] } def collectJacocoExecutionData = { Project module, String unitTestTaskName -> return module.fileTree(dir: module.buildDir, includes: [ "jacoco/${unitTestTaskName}.exec", "outputs/unit_test_code_coverage/**/${unitTestTaskName}.exec", "outputs/unit_test_code_coverage/**/*.ec", ]) } tasks.withType(Test).configureEach { jacoco { includeNoLocationClasses = true Loading Loading @@ -161,7 +193,9 @@ android.applicationVariants.configureEach { variant -> } tasks.register("jacoco${variantCap}Report", JacocoReport) { dependsOn(unitTestTask) dependsOn(jacocoCoverageProjects.collect { module -> "${module.path}:${unitTestTaskName}" }) group = "verification" description = "Generates Jacoco coverage report for the ${variant.name} build." Loading @@ -170,26 +204,23 @@ android.applicationVariants.configureEach { variant -> html.required = true } def javaClasses = fileTree("${buildDir}/intermediates/javac/${variant.name}/classes") { exclude jacocoFileFilter } def kotlinClasses = fileTree("${buildDir}/tmp/kotlin-classes/${variant.name}") { exclude jacocoFileFilter classDirectories.from = files( jacocoCoverageProjects.collectMany { module -> collectJacocoClassDirectories(module, variant.name) } ) classDirectories.from = files(javaClasses, kotlinClasses) def sourceDirs = variant.sourceSets.collect { sourceSet -> def dirs = [] dirs.addAll(sourceSet.java.srcDirs) if (sourceSet.hasProperty('kotlin')) { dirs.addAll(sourceSet.kotlin.srcDirs) sourceDirectories.from = files( jacocoCoverageProjects.collectMany { module -> collectJacocoSourceDirectories(module) } return dirs }.flatten() ) sourceDirectories.from = files(sourceDirs) executionData.from = file("${buildDir}/jacoco/${unitTestTaskName}.exec") executionData.from = files( jacocoCoverageProjects.collect { module -> collectJacocoExecutionData(module, unitTestTaskName) } ) } } Loading data/build.gradle +12 −0 Original line number Diff line number Diff line plugins { id 'com.android.library' id 'kotlin-android' id 'jacoco' } jacoco { toolVersion = libs.versions.jacoco.get() } tasks.withType(Test).configureEach { jacoco { includeNoLocationClasses = true excludes = ['jdk.internal.*'] } } android { Loading domain/build.gradle +12 −0 Original line number Diff line number Diff line plugins { id 'com.android.library' id 'kotlin-android' id 'jacoco' } jacoco { toolVersion = libs.versions.jacoco.get() } tasks.withType(Test).configureEach { jacoco { includeNoLocationClasses = true excludes = ['jdk.internal.*'] } } android { Loading Loading
app/build.gradle +49 −18 Original line number Diff line number Diff line Loading @@ -66,6 +66,38 @@ def jacocoFileFilter = [ '**/*Hilt*.*' ] def jacocoCoverageProjects = [ project(':app'), project(':data'), project(':domain'), ] def collectJacocoClassDirectories = { Project module, String variantName -> return [ module.fileTree("${module.buildDir}/intermediates/javac/${variantName}/classes") { exclude jacocoFileFilter }, module.fileTree("${module.buildDir}/tmp/kotlin-classes/${variantName}") { exclude jacocoFileFilter } ] } def collectJacocoSourceDirectories = { Project module -> return [ "${module.projectDir}/src/main/java", "${module.projectDir}/src/main/kotlin", ] } def collectJacocoExecutionData = { Project module, String unitTestTaskName -> return module.fileTree(dir: module.buildDir, includes: [ "jacoco/${unitTestTaskName}.exec", "outputs/unit_test_code_coverage/**/${unitTestTaskName}.exec", "outputs/unit_test_code_coverage/**/*.ec", ]) } tasks.withType(Test).configureEach { jacoco { includeNoLocationClasses = true Loading Loading @@ -161,7 +193,9 @@ android.applicationVariants.configureEach { variant -> } tasks.register("jacoco${variantCap}Report", JacocoReport) { dependsOn(unitTestTask) dependsOn(jacocoCoverageProjects.collect { module -> "${module.path}:${unitTestTaskName}" }) group = "verification" description = "Generates Jacoco coverage report for the ${variant.name} build." Loading @@ -170,26 +204,23 @@ android.applicationVariants.configureEach { variant -> html.required = true } def javaClasses = fileTree("${buildDir}/intermediates/javac/${variant.name}/classes") { exclude jacocoFileFilter } def kotlinClasses = fileTree("${buildDir}/tmp/kotlin-classes/${variant.name}") { exclude jacocoFileFilter classDirectories.from = files( jacocoCoverageProjects.collectMany { module -> collectJacocoClassDirectories(module, variant.name) } ) classDirectories.from = files(javaClasses, kotlinClasses) def sourceDirs = variant.sourceSets.collect { sourceSet -> def dirs = [] dirs.addAll(sourceSet.java.srcDirs) if (sourceSet.hasProperty('kotlin')) { dirs.addAll(sourceSet.kotlin.srcDirs) sourceDirectories.from = files( jacocoCoverageProjects.collectMany { module -> collectJacocoSourceDirectories(module) } return dirs }.flatten() ) sourceDirectories.from = files(sourceDirs) executionData.from = file("${buildDir}/jacoco/${unitTestTaskName}.exec") executionData.from = files( jacocoCoverageProjects.collect { module -> collectJacocoExecutionData(module, unitTestTaskName) } ) } } Loading
data/build.gradle +12 −0 Original line number Diff line number Diff line plugins { id 'com.android.library' id 'kotlin-android' id 'jacoco' } jacoco { toolVersion = libs.versions.jacoco.get() } tasks.withType(Test).configureEach { jacoco { includeNoLocationClasses = true excludes = ['jdk.internal.*'] } } android { Loading
domain/build.gradle +12 −0 Original line number Diff line number Diff line plugins { id 'com.android.library' id 'kotlin-android' id 'jacoco' } jacoco { toolVersion = libs.versions.jacoco.get() } tasks.withType(Test).configureEach { jacoco { includeNoLocationClasses = true excludes = ['jdk.internal.*'] } } android { Loading