| buildscript { |
| |
| /* |
| * These property group is used to build kotlinx.coroutines against Kotlin compiler snapshot. |
| * How does it work: |
| * When build_snapshot_train is set to true, kotlin_version property is overridden with kotlin_snapshot_version, |
| * atomicfu_version is overwritten by TeamCity environment (AFU is built with snapshot and published to mavenLocal |
| * as previous step or the snapshot build). |
| * Additionally, mavenLocal and Sonatype snapshots are added to repository list and stress tests are disabled. |
| * DO NOT change the name of these properties without adapting kotlinx.train build chain. |
| */ |
| def prop = rootProject.properties['build_snapshot_train'] |
| ext.build_snapshot_train = prop != null && prop != "" |
| if (build_snapshot_train) { |
| ext.kotlin_version = rootProject.properties['kotlin_snapshot_version'] |
| if (kotlin_version == null) { |
| throw new IllegalArgumentException("'kotlin_snapshot_version' should be defined when building with snapshot compiler") |
| } |
| } |
| ext.native_targets_enabled = rootProject.properties['disable_native_targets'] == null |
| |
| // Determine if any project dependency is using a snapshot version |
| ext.using_snapshot_version = build_snapshot_train |
| rootProject.properties.each { key, value -> |
| if (key.endsWith("_version") && value instanceof String && value.endsWith("-SNAPSHOT")) { |
| println("NOTE: USING SNAPSHOT VERSION: $key=$value") |
| ext.using_snapshot_version = true |
| } |
| } |
| |
| if (using_snapshot_version) { |
| repositories { |
| mavenLocal() |
| maven { url "https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev" } |
| } |
| } |
| |
| } |
| |
| plugins { |
| id "org.jetbrains.kotlin.jvm" version "$kotlin_version" |
| } |
| |
| repositories { |
| if (build_snapshot_train) { |
| maven { url "https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev" } |
| } |
| mavenLocal() |
| mavenCentral() |
| } |
| |
| java { |
| sourceCompatibility = JavaVersion.VERSION_1_8 |
| targetCompatibility = JavaVersion.VERSION_1_8 |
| } |
| |
| dependencies { |
| testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version" |
| testImplementation "org.ow2.asm:asm:$asm_version" |
| implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8" |
| } |
| |
| sourceSets { |
| // An assortment of tests for behavior of the core coroutines module on JVM |
| jvmCoreTest { |
| 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 a 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 jvmCoreTest(type: Test) { |
| environment "version", coroutines_version |
| def sourceSet = sourceSets.jvmCoreTest |
| 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([jvmCoreTest, debugDynamicAgentTest, mavenTest, debugAgentTest, coreAgentTest, 'smokeTest:build']) |
| } |
| compileKotlin { |
| kotlinOptions { |
| jvmTarget = "1.8" |
| } |
| } |
| |
| // Drop this when node js version become stable |
| tasks.withType(org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask.class).configureEach { |
| it.args.add("--ignore-engines") |
| } |