Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 934c89e4 authored by Abhishek Aggarwal's avatar Abhishek Aggarwal Committed by Jonathan Klee
Browse files

tests: Include data and domain in jacoco report

parent f461732d
Loading
Loading
Loading
Loading
Loading
+49 −18
Original line number Diff line number Diff line
@@ -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
@@ -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."

@@ -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)
            }
        )
    }
}

+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 {
+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 {