diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/Readme.md b/libraries/tools/kotlin-gradle-plugin-integration-tests/Readme.md index ad92e29b80d..c346ed17ab8 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/Readme.md +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/Readme.md @@ -116,10 +116,10 @@ add a new assertion, add as a reviewer someone from Kotlin build tools team. ##### Additional test helpers -- Whenever you need to test combination of different JDKs and Gradle versions - you could use `@GradleWithJdkTest` instead of `@GradleTest`. +- Whenever you need to test combinations of different JDKs and Gradle versions - you could use `@GradleWithJdkTest` instead of `@GradleTest`. Then test method will receive requires JDKs as a second parameter: ```kotlin -@JdkVersions(version = [JavaVersion.VERSION_11, JavaVersion.VERSION_17]) +@JdkVersions(version = [JavaVersion.VERSION_11, JavaVersion.VERSION_21]) @GradleWithJdkTest fun someTest( gradleVersion: GradleVersion, 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 be6b1063423..1ca9c038563 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts @@ -408,10 +408,7 @@ tasks.withType { } val jdk8Provider = project.getToolchainJdkHomeFor(JdkMajorVersion.JDK_1_8) - val jdk9Provider = project.getToolchainJdkHomeFor(JdkMajorVersion.JDK_9_0) - val jdk10Provider = project.getToolchainJdkHomeFor(JdkMajorVersion.JDK_10_0) val jdk11Provider = project.getToolchainJdkHomeFor(JdkMajorVersion.JDK_11_0) - val jdk16Provider = project.getToolchainJdkHomeFor(JdkMajorVersion.JDK_16_0) val jdk17Provider = project.getToolchainJdkHomeFor(JdkMajorVersion.JDK_17_0) val jdk21Provider = project.getToolchainJdkHomeFor(JdkMajorVersion.JDK_21_0) val mavenLocalRepo = project.providers.systemProperty("maven.repo.local").orNull @@ -420,10 +417,7 @@ tasks.withType { // names should follow "jdk\\d+Home" regex where number is a major JDK version doFirst { systemProperty("jdk8Home", jdk8Provider.get()) - systemProperty("jdk9Home", jdk9Provider.get()) - systemProperty("jdk10Home", jdk10Provider.get()) systemProperty("jdk11Home", jdk11Provider.get()) - systemProperty("jdk16Home", jdk16Provider.get()) systemProperty("jdk17Home", jdk17Provider.get()) systemProperty("jdk21Home", jdk21Provider.get()) if (mavenLocalRepo != null) { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/JvmTargetValidationTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/JvmTargetValidationTest.kt index 8689d0279d4..883c1a7a908 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/JvmTargetValidationTest.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/JvmTargetValidationTest.kt @@ -357,12 +357,12 @@ class JvmTargetValidationTest : KGPBaseTest() { projectName = "kapt2/simple", gradleVersion = gradleVersion, ) { - val toolchainJavaVersion = if (gradleVersion < GradleVersion.version("6.9")) 11 else 16 + val toolchainJavaVersion = if (gradleVersion < GradleVersion.version("6.9")) 11 else 17 gradleProperties.append( """ kotlin.jvm.target.validation.mode = error - org.gradle.java.installations.paths=${getJdk16().javaHome},${getJdk11().javaHome} + org.gradle.java.installations.paths=${getJdk17().javaHome},${getJdk11().javaHome} """.trimIndent() ) @@ -505,7 +505,7 @@ class JvmTargetValidationTest : KGPBaseTest() { private fun getJdk11(): JavaInfo = Jvm.forHome(File(System.getProperty("jdk11Home"))) - private fun getJdk16(): JavaInfo = Jvm.forHome(File(System.getProperty("jdk16Home"))) + private fun getJdk17(): JavaInfo = Jvm.forHome(File(System.getProperty("jdk17Home"))) private val String.fullProjectName get() = "kotlin-java-toolchain/$this" } 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 6bf76f7b450..957201fa973 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 @@ -232,7 +232,7 @@ open class Kapt3IT : Kapt3BaseIT() { } @DisplayName("Kapt is working with newer JDKs") - @JdkVersions(versions = [JavaVersion.VERSION_1_10, JavaVersion.VERSION_11, JavaVersion.VERSION_16, JavaVersion.VERSION_17]) + @JdkVersions(versions = [JavaVersion.VERSION_11, JavaVersion.VERSION_17, JavaVersion.VERSION_21]) @GradleWithJdkTest fun doTestSimpleWithCustomJdk( gradleVersion: GradleVersion, @@ -260,38 +260,8 @@ open class Kapt3IT : Kapt3BaseIT() { } } - // TODO: Remove as JDK 21 is supported on Java Toolchains - @DisplayName("Kapt is working with JDK 21") - @GradleTest - @GradleTestVersions(minVersion = TestVersions.Gradle.G_7_3) - @EnableOnJdk21 - fun doTestSimpleWithJdk21( - gradleVersion: GradleVersion - ) { - project( - "simple".withPrefix, - gradleVersion, - ) { - //language=Groovy - buildGradle.appendText( - """ - | - |kotlin { - | jvmToolchain(21) - |} - """.trimMargin() - ) - - build("assemble") { - assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin") - // Check added because of https://youtrack.jetbrains.com/issue/KT-33056. - assertOutputDoesNotContain("javaslang.match.PatternsProcessor") - } - } - } - @DisplayName("KT-48402: Kapt worker classpath is using JRE classes from toolchain") - @JdkVersions(versions = [JavaVersion.VERSION_16]) + @JdkVersions(versions = [JavaVersion.VERSION_17]) @GradleWithJdkTest fun kaptClasspathJreToolchain( gradleVersion: GradleVersion, diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalWithAggregatingApt.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalWithAggregatingApt.kt index dcc1ff0fe04..0f26739d469 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalWithAggregatingApt.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KaptIncrementalWithAggregatingApt.kt @@ -94,7 +94,7 @@ open class KaptIncrementalWithAggregatingApt : KaptIncrementalIT() { } @DisplayName("Incremental changes in JDK9+") - @JdkVersions(versions = [JavaVersion.VERSION_1_9]) + @JdkVersions(versions = [JavaVersion.VERSION_11]) @GradleWithJdkTest fun testIncrementalChangesWithJdk9(gradleVersion: GradleVersion, jdk: JdkVersions.ProvidedJdk) { kaptProject(gradleVersion, buildJdk = jdk.location) { @@ -214,14 +214,14 @@ open class KaptIncrementalWithAggregatingApt : KaptIncrementalIT() { } @DisplayName("Incremental aggregating changes") - @JdkVersions(versions = [JavaVersion.VERSION_1_8, JavaVersion.VERSION_1_9]) + @JdkVersions(versions = [JavaVersion.VERSION_1_8, JavaVersion.VERSION_11]) @GradleWithJdkTest fun testIncrementalAggregatingChanges(gradleVersion: GradleVersion, jdk: JdkVersions.ProvidedJdk) { doIncrementalAggregatingChanges(gradleVersion, jdk) } @DisplayName("Incremental binary aggregating changes") - @JdkVersions(versions = [JavaVersion.VERSION_1_8, JavaVersion.VERSION_1_9]) + @JdkVersions(versions = [JavaVersion.VERSION_1_8, JavaVersion.VERSION_11]) @GradleWithJdkTest fun testIncrementalBinaryAggregatingChanges(gradleVersion: GradleVersion, jdk: JdkVersions.ProvidedJdk) { doIncrementalAggregatingChanges( diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt index 9565b7e0595..4d875afbfde 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt @@ -42,15 +42,15 @@ class KotlinJavaToolchainTest : KGPBaseTest() { projectName = "simple".fullProjectName, gradleVersion = gradleVersion, ) { - setJavaCompilationCompatibility(JavaVersion.VERSION_1_9) + setJavaCompilationCompatibility(JavaVersion.VERSION_11) useJdkToCompile( - getJdk9Path(), - JavaVersion.VERSION_1_9 + getJdk11Path(), + JavaVersion.VERSION_11 ) build("assemble") { - assertJdkHomeIsUsingJdk(getJdk9().javaHomeRealPath) + assertJdkHomeIsUsingJdk(getJdk11().javaHomeRealPath) } } } @@ -67,15 +67,7 @@ class KotlinJavaToolchainTest : KGPBaseTest() { buildOptions = defaultBuildOptions.copy(buildCacheEnabled = true) ) { enableLocalBuildCache(buildCache) - if (shouldUseToolchain(gradleVersion)) { - useToolchainExtension(11) - } else { - setJavaCompilationCompatibility(JavaVersion.VERSION_1_9) - useJdkToCompile( - getJdk9Path(), - JavaVersion.VERSION_1_9 - ) - } + useToolchainExtension(11) build("assemble") } @@ -87,15 +79,7 @@ class KotlinJavaToolchainTest : KGPBaseTest() { buildOptions = defaultBuildOptions.copy(buildCacheEnabled = true) ) { enableLocalBuildCache(buildCache) - if (shouldUseToolchain(gradleVersion)) { - useToolchainExtension(11) - } else { - setJavaCompilationCompatibility(JavaVersion.VERSION_1_9) - useJdkToCompile( - getJdk9Path(), - JavaVersion.VERSION_1_9 - ) - } + useToolchainExtension(11) build("assemble") { assertTasksFromCache(":compileKotlin") @@ -113,10 +97,10 @@ class KotlinJavaToolchainTest : KGPBaseTest() { gradleVersion = gradleVersion, projectPathAdditionalSuffix = "1/cache-test", buildOptions = defaultBuildOptions.copy(buildCacheEnabled = true), - buildJdk = getJdk9().javaHome!! + buildJdk = getJdk11().javaHome!! ) { enableLocalBuildCache(buildCache) - useToolchainExtension(11) + useToolchainExtension(17) build("assemble") } @@ -129,7 +113,7 @@ class KotlinJavaToolchainTest : KGPBaseTest() { buildJdk = getJdk11().javaHome!! ) { enableLocalBuildCache(buildCache) - useToolchainExtension(11) + useToolchainExtension(17) build("assemble") { assertTasksFromCache(":compileKotlin") @@ -149,15 +133,8 @@ class KotlinJavaToolchainTest : KGPBaseTest() { buildOptions = defaultBuildOptions.copy(buildCacheEnabled = true) ) { enableLocalBuildCache(buildCache) - if (shouldUseToolchain(gradleVersion)) { - useToolchainExtension(11) - } else { - setJavaCompilationCompatibility(JavaVersion.VERSION_1_9) - useJdkToCompile( - getJdk9Path(), - JavaVersion.VERSION_1_9 - ) - } + useToolchainExtension(11) + build("assemble") } @@ -183,26 +160,14 @@ class KotlinJavaToolchainTest : KGPBaseTest() { gradleVersion = gradleVersion, buildOptions = defaultBuildOptions.copy(languageVersion = "1.9"), ) { - if (shouldUseToolchain(gradleVersion)) { - useToolchainExtension(11) - } else { - useJdkToCompile( - getJdk9Path(), - JavaVersion.VERSION_1_9 - ) - } + useToolchainExtension(11) + gradleProperties.append( "kapt.workers.isolation = none" ) build("assemble") { - assertJdkHomeIsUsingJdk( - if (shouldUseToolchain(gradleVersion)) { - getToolchainExecPathFromLogs() - } else { - getJdk9().javaHomeRealPath - } - ) + assertJdkHomeIsUsingJdk(getToolchainExecPathFromLogs()) assertOutputContains("Using workers PROCESS isolation mode to run kapt") assertOutputContains("Using non-default Kotlin java toolchain - 'kapt.workers.isolation == none' property is ignored!") @@ -238,14 +203,7 @@ class KotlinJavaToolchainTest : KGPBaseTest() { buildOptions = defaultBuildOptions.copy(buildCacheEnabled = true, languageVersion = "1.9") ) { enableLocalBuildCache(buildCache) - if (shouldUseToolchain(gradleVersion)) { - useToolchainExtension(11) - } else { - useJdkToCompile( - getJdk9Path(), - JavaVersion.VERSION_1_9 - ) - } + useToolchainExtension(11) build("assemble") } @@ -257,14 +215,7 @@ class KotlinJavaToolchainTest : KGPBaseTest() { buildOptions = defaultBuildOptions.copy(buildCacheEnabled = true, languageVersion = "1.9"), ) { enableLocalBuildCache(buildCache) - if (shouldUseToolchain(gradleVersion)) { - useToolchainExtension(11) - } else { - useJdkToCompile( - getJdk9Path(), - JavaVersion.VERSION_1_9 - ) - } + useToolchainExtension(11) build("assemble") { assertTasksFromCache( @@ -810,10 +761,8 @@ class KotlinJavaToolchainTest : KGPBaseTest() { ) = assertOutputContains("[KOTLIN] Kotlin compilation 'jdkHome' argument: $javaexecPath") private fun getUserJdk(): JavaInfo = Jvm.forHome(File(System.getProperty("java.home"))) - private fun getJdk9(): JavaInfo = Jvm.forHome(File(System.getProperty("jdk9Home"))) private fun getJdk11(): JavaInfo = Jvm.forHome(File(System.getProperty("jdk11Home"))) // replace required for windows paths so Groovy will not complain about unexpected char '\' - private fun getJdk9Path(): String = getJdk9().javaHome.absolutePath.replace("\\", "\\\\") private fun getJdk11Path(): String = getJdk11().javaHome.absolutePath.replace("\\", "\\\\") private val JavaInfo.javaHomeRealPath get() = javaHome @@ -934,8 +883,6 @@ class KotlinJavaToolchainTest : KGPBaseTest() { ) } - private fun shouldUseToolchain(gradleVersion: GradleVersion) = gradleVersion >= GradleVersion.version("6.7") - private fun BuildResult.getToolchainExecPathFromLogs() = output .lineSequence() .first { it.startsWith("Toolchain jdk path:") } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/argumentProviders.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/argumentProviders.kt index f0fcc5c1d3b..72cd114db18 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/argumentProviders.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/argumentProviders.kt @@ -82,7 +82,7 @@ open class GradleArgumentsProvider : ArgumentsProvider { @Target(AnnotationTarget.FUNCTION, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CLASS) @Retention(AnnotationRetention.RUNTIME) annotation class JdkVersions( - val versions: Array = [JavaVersion.VERSION_1_8, JavaVersion.VERSION_17], + val versions: Array = [JavaVersion.VERSION_1_8, JavaVersion.VERSION_21], val compatibleWithGradle: Boolean = true ) { class ProvidedJdk( @@ -137,9 +137,9 @@ class GradleAndJdkArgumentsProvider : GradleArgumentsProvider() { companion object { private val jdkGradleCompatibilityMatrix = mapOf( - JavaVersion.VERSION_15 to GradleVersion.version(TestVersions.Gradle.G_6_8), JavaVersion.VERSION_16 to GradleVersion.version(TestVersions.Gradle.G_7_0), - JavaVersion.VERSION_17 to GradleVersion.version(TestVersions.Gradle.G_7_3) + JavaVersion.VERSION_17 to GradleVersion.version(TestVersions.Gradle.G_7_3), + JavaVersion.VERSION_21 to GradleVersion.version(TestVersions.Gradle.G_7_3), ) } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/jdkConditions.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/jdkConditions.kt deleted file mode 100644 index 8bd3bc87aa3..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/jdkConditions.kt +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.gradle.testbase - -import org.junit.jupiter.api.extension.ConditionEvaluationResult -import org.junit.jupiter.api.extension.ExecutionCondition -import org.junit.jupiter.api.extension.ExtendWith -import org.junit.jupiter.api.extension.ExtensionContext - -class EnableOnJdk21Condition : ExecutionCondition { - override fun evaluateExecutionCondition(context: ExtensionContext?): ConditionEvaluationResult = - if (System.getProperty("jdk21Home") == null) { - ConditionEvaluationResult.disabled("No JDK 21 Found") - } else { - ConditionEvaluationResult.enabled("JDK 21 Found") - } -} - -@Target(AnnotationTarget.FUNCTION) -@Retention(AnnotationRetention.RUNTIME) -@ExtendWith(EnableOnJdk21Condition::class) -annotation class EnableOnJdk21 \ No newline at end of file diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/JvmToolchain.kt b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/JvmToolchain.kt index 9f0fd3e115a..df1fbc3bf78 100644 --- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/JvmToolchain.kt +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/JvmToolchain.kt @@ -22,7 +22,6 @@ enum class JdkMajorVersion( JDK_9_0(9, overrideMajorVersion = 11), JDK_10_0(10, mandatory = false, overrideMajorVersion = 11), JDK_11_0(11, mandatory = false), - JDK_16_0(16, mandatory = false), JDK_17_0(17, mandatory = false), JDK_21_0(21, mandatory = false);