[Gradle] Drop usage of non-LTS JDK versions in integration tests

This commit is contained in:
Yahor Berdnikau
2023-11-21 21:37:21 +01:00
committed by Space Team
parent 224b21b177
commit b000b3a90b
9 changed files with 29 additions and 144 deletions
@@ -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) {
@@ -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"
}
@@ -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,
@@ -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(
@@ -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:") }
@@ -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),
)
}
}
@@ -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);