/*
 * Copyright 2016-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
 */

configurations {
    testArtifacts
    configureKotlinJvmPlatform(testArtifacts)
}

dependencies {
    compile 'org.ow2.asm:asm-debug-all:5.0.4'
    compile 'com.google.code.gson:gson:2.6.2'

    testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"

    testArtifacts project(':kotlinx-coroutines-core')
    testArtifacts project(':kotlinx-coroutines-test')
    testArtifacts project(':kotlinx-coroutines-debug')

    testArtifacts project(':kotlinx-coroutines-reactive')
    testArtifacts project(':kotlinx-coroutines-reactor')
    testArtifacts project(':kotlinx-coroutines-rx2')

    testArtifacts project(':kotlinx-coroutines-guava')
    testArtifacts project(':kotlinx-coroutines-jdk8')
    testArtifacts project(':kotlinx-coroutines-slf4j')
    testArtifacts project(path: ':kotlinx-coroutines-play-services', configuration: 'default')

    testArtifacts project(':kotlinx-coroutines-android')
    testArtifacts project(':kotlinx-coroutines-javafx')
    testArtifacts project(':kotlinx-coroutines-swing')
}

def testCasesDeclarationsDump = "${buildDir}/visibilities.json".toString()

compileTestKotlin {
    kotlinOptions {
        freeCompilerArgs = ["-Xdump-declarations-to=$testCasesDeclarationsDump"]
    }
}

sourceSets {
    test {
        java {
            srcDir "test/cases"
        }
    }
}

test {
    dependsOn cleanCompileTestKotlin
    dependsOn configurations.testArtifacts

    systemProperty 'testCasesClassesDirs', sourceSets.test.output.classesDirs.asPath
    systemProperty 'testCasesDeclarations', testCasesDeclarationsDump
    systemProperty 'overwrite.output', project.properties['overwrite.output']
    jvmArgs '-ea'
}
