description = 'Kotlin Test'

apply plugin: 'kotlin-platform-jvm'

archivesBaseName = 'kotlin-test'

JvmToolchain.configureJvmToolchain(project, JdkMajorVersion.JDK_1_8)

def includeJava9 = BuildPropertiesExtKt.getIncludeJava9(project.kotlinBuildProperties)

sourceSets {
    if (includeJava9) {
        java9
    }
}

dependencies {
    expectedBy project(':kotlin-test:kotlin-test-common')
    api(RepoDependencies.kotlinStdlib(project, "mpp"))
    testApi(project(":kotlin-test:kotlin-test-junit"))
    testApi('junit:junit:4.13.2')
}

jar {
    LibrariesCommon.manifestAttributes(project, manifest, 'Test', true)
    if (includeJava9) {
        from sourceSets.java9.output
    }
}

RepoArtifacts.sourcesJar(project)
RepoArtifacts.javadocJar(project)

compileKotlin {
    kotlinOptions.freeCompilerArgs = [
        "-Xallow-kotlin-package",
        "-opt-in=kotlin.contracts.ExperimentalContracts",
        "-opt-in=kotlin.RequiresOptIn",
    ]
    kotlinOptions.moduleName = project.archivesBaseName
}

compileTestKotlin {
    kotlinOptions.freeCompilerArgs = [
        "-Xallow-kotlin-package",
        "-opt-in=kotlin.RequiresOptIn",
    ]
}

LibrariesCommon.configureFrontendIr(project)

if (includeJava9) {
    LibrariesCommon.configureJava9Compilation(project, 'kotlin.test')
}
