From 19a60d6b85d341d023ee2ad303abb906a5d10189 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Wed, 19 Jul 2023 11:12:54 +0200 Subject: [PATCH] [Gradle] Fix kapt test with different JDK versions This test was incorrect as it configured JVM toolchain to use JDK 1.8. This configured JVM toolchain forced kapt tasks to always use JDK 1.8 even if the build itself was running on different JDK versions. Now test uses different values for JVM toolchain which should correctly configure kapt JDK. ^KT-59588 --- .../build.gradle.kts | 1 + .../src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt | 3 +-- .../kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts index 25a1719e483..5375d997113 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts @@ -358,6 +358,7 @@ tasks.withType { val mavenLocalRepo = project.providers.systemProperty("maven.repo.local").orNull // Query required JDKs paths only on execution phase to avoid triggering auto-download on project configuration phase + // names should follow "jdk\\d+Home" regex where number is a major JDK version doFirst { systemProperty("jdk8Home", jdk8Provider.get()) systemProperty("jdk9Home", jdk9Provider.get()) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt index 7e2cab590d5..92b5be4031a 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt @@ -160,14 +160,13 @@ open class Kapt3IT : Kapt3BaseIT() { project( "simple".withPrefix, gradleVersion, - buildJdk = jdk.location ) { //language=Groovy buildGradle.appendText( """ | |kotlin { - | jvmToolchain(8) + | jvmToolchain(${jdk.version.majorVersion}) |} """.trimMargin() ) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt index 33875614699..6f43fc5a93f 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt @@ -417,9 +417,16 @@ private fun commonBuildSetup( gradleVersion: GradleVersion, kotlinDaemonDebugPort: Int? = null, ): List { + // Following jdk system properties are provided via sub-project build.gradle.kts + val jdkPropNameRegex = Regex("jdk\\d+Home") + val jdkLocations = System.getProperties() + .filterKeys { it.toString().matches(jdkPropNameRegex) } + .values + .joinToString(separator = ",") return buildOptions.toArguments(gradleVersion) + buildArguments + listOfNotNull( // Required toolchains should be pre-installed via repo. Tests should not download any JDKs "-Porg.gradle.java.installations.auto-download=false", + "-Porg.gradle.java.installations.paths=$jdkLocations", "--full-stacktrace", if (enableBuildCacheDebug) "-Dorg.gradle.caching.debug=true" else null, if (enableBuildScan) "--scan" else null,