apply plugin: 'kover'

project.ext {

    // Exclude file by names, packages or types. Such files will be ignored during test coverage
    // calculation
    ignoreFileFilter = [
            '**/*App.*',
            '**/*Application.*',
            '**/*Activity.*',
            '**/*Fragment.*',
            '**/*View.*',
            '**/*ViewGroup.*',
            '**/*JsonAdapter.*',
            '**/di/**',
            '**/*Dagger.*'
    ]
}

kover{
    instrumentation {
        // exclude jdk internals from instrumentation
        excludeTasks.add "jdk.internal.*"
    }

    xmlReport {
        // set to true to run koverXmlReport task during the execution of the check task (if it exists) of the current project
        onCheck.set false

        // change report file name
        reportFile.set layout.buildDirectory.file("reports/kover/xml/${project.name}.xml")
        overrideFilters {
            // override common class filter
            classes {
                // override class exclusion rules
                excludes.addAll ignoreFileFilter
            }
        }
    }

    htmlReport {
        // set to true to run koverMergedHtmlReport task during the execution of the check task (if it exists) of the current project
        onCheck.set false

        // change report directory
        reportDir.set layout.buildDirectory.dir("reports/kover/html/${project.name}/")

        overrideFilters {
            // override common class filter
            classes {
                // override class exclusion rules
                excludes.addAll ignoreFileFilter
            }
        }
    }
}

tasks.withType(Test) {
    kover {
        isDisabled = project.name.contains("test")
        excludes = ['okhttp3.*'] // added to resolve conflict with mockk
    }
}