/* * Copyright 2016-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType plugins { id "org.jetbrains.kotlin.jvm" } repositories { mavenLocal() mavenCentral() } java { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } dependencies { testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version" } sourceSets { // Test that relies on Guava to reflectively check all Throwable subclasses in coroutines withGuavaTest { kotlin compileClasspath += sourceSets.test.runtimeClasspath runtimeClasspath += sourceSets.test.runtimeClasspath dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version" implementation 'com.google.guava:guava:31.1-jre' } } // Checks correctness of Maven publication (JAR resources) and absence of atomicfu symbols mavenTest { kotlin compileClasspath += sourceSets.test.runtimeClasspath runtimeClasspath += sourceSets.test.runtimeClasspath dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version" } } // Checks that kotlinx-coroutines-debug can be used as -javaagent parameter debugAgentTest { kotlin compileClasspath += sourceSets.test.runtimeClasspath runtimeClasspath += sourceSets.test.runtimeClasspath dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-debug:$coroutines_version" } } // Checks that kotlinx-coroutines-debug agent can self-attach dynamically to JVM as standalone dependency debugDynamicAgentTest { kotlin compileClasspath += sourceSets.test.runtimeClasspath runtimeClasspath += sourceSets.test.runtimeClasspath dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-debug:$coroutines_version" } } // Checks that kotlinx-coroutines-core can be used as -javaagent parameter coreAgentTest { kotlin compileClasspath += sourceSets.test.runtimeClasspath runtimeClasspath += sourceSets.test.runtimeClasspath dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version" } } } compileDebugAgentTestKotlin { kotlinOptions { freeCompilerArgs += ["-Xallow-kotlin-package"] } } task withGuavaTest(type: Test) { environment "version", coroutines_version def sourceSet = sourceSets.withGuavaTest testClassesDirs = sourceSet.output.classesDirs classpath = sourceSet.runtimeClasspath } task mavenTest(type: Test) { environment "version", coroutines_version def sourceSet = sourceSets.mavenTest testClassesDirs = sourceSet.output.classesDirs classpath = sourceSet.runtimeClasspath } task debugAgentTest(type: Test) { def sourceSet = sourceSets.debugAgentTest def coroutinesDebugJar = sourceSet.runtimeClasspath.filter {it.name == "kotlinx-coroutines-debug-${coroutines_version}.jar" }.singleFile jvmArgs ('-javaagent:' + coroutinesDebugJar) testClassesDirs = sourceSet.output.classesDirs classpath = sourceSet.runtimeClasspath systemProperties project.properties.subMap(["overwrite.probes"]) } task debugDynamicAgentTest(type: Test) { def sourceSet = sourceSets.debugDynamicAgentTest testClassesDirs = sourceSet.output.classesDirs classpath = sourceSet.runtimeClasspath } task coreAgentTest(type: Test) { def sourceSet = sourceSets.coreAgentTest def coroutinesCoreJar = sourceSet.runtimeClasspath.filter {it.name == "kotlinx-coroutines-core-jvm-${coroutines_version}.jar" }.singleFile jvmArgs ('-javaagent:' + coroutinesCoreJar) testClassesDirs = sourceSet.output.classesDirs classpath = sourceSet.runtimeClasspath } compileTestKotlin { kotlinOptions.jvmTarget = "1.8" } check { dependsOn([withGuavaTest, debugDynamicAgentTest, mavenTest, debugAgentTest, coreAgentTest, 'smokeTest:build']) }