[Gradle] Drop usage of non-LTS JDK versions in integration tests
This commit is contained in:
committed by
Space Team
parent
224b21b177
commit
b000b3a90b
@@ -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,
|
||||
|
||||
@@ -408,10 +408,7 @@ tasks.withType<Test> {
|
||||
}
|
||||
|
||||
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<Test> {
|
||||
// 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) {
|
||||
|
||||
+3
-3
@@ -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"
|
||||
}
|
||||
|
||||
+2
-32
@@ -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,
|
||||
|
||||
+3
-3
@@ -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(
|
||||
|
||||
+16
-69
@@ -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:") }
|
||||
|
||||
+3
-3
@@ -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> = [JavaVersion.VERSION_1_8, JavaVersion.VERSION_17],
|
||||
val versions: Array<JavaVersion> = [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),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
-25
@@ -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
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user