/**
 * This module provides a base for for pure kotlin modules
 */
apply plugin: 'kotlin'
apply plugin: 'kotlin-kapt'
apply plugin: 'jacoco'
apply from: "${project.rootDir}/gradle_scripts/code_quality.gradle"

sourceSets {
    main.java.srcDirs += "${projectDir}/src/main/kotlin"
    test.java.srcDirs += "${projectDir}/src/test/kotlin"
    test.java.srcDirs += "${projectDir}/src/integrationTest/kotlin"
    test.resources.srcDirs += "${projectDir}/src/integrationTest/resources"
}


dependencies {
    api other.kotlinStdlib

    testImplementation testing.junit
    testRuntimeOnly testing.junitVintage
}

jacoco {
    toolVersion(versions.jacoco)
}

ext {
    // override it in the module
    jacocoExclude = ['jdk.internal.*']
}

jacocoTestReport {
    reports {
        html.required = true
        xml.required = false
        csv.required = false
    }

    afterEvaluate {
        getClassDirectories().setFrom(files(classDirectories.files.collect {
            fileTree(dir: it, excludes: jacocoExclude)
        }))
    }
}

tasks.named("test").configure {
    useJUnitPlatform()
    jacoco {
        excludes += jacocoExclude
        includeNoLocationClasses = true
    }
    finalizedBy jacocoTestReport
}

tasks.register("ciTest") {
    dependsOn test
    group = "Verification"
    description = "Special task for CI that calls all tests in pure kotlin modules"
}