From 2a195062a85e03389976b81344b581d8b80b9243 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Thu, 15 Feb 2024 21:43:16 +0100 Subject: [PATCH] [Gradle] Add plugin variant for Gradle 8.5 ^KT-64355 In Progress --- .../kotlin/gradle/SimpleKotlinGradleIT.kt | 2 +- .../kotlin/gradle/plugin/PluginWrappers.kt | 137 ++++++++++++++++++ .../jetbrains/kotlin/atomicfu/atomicfu.pom | 33 +++++ .../js-plain-objects/js-plain-objects.pom | 33 +++++ .../kotlin/kotlin-allopen/kotlin-allopen.pom | 33 +++++ .../kotlin-assignment/kotlin-assignment.pom | 33 +++++ .../kotlin-gradle-plugin-model.pom | 33 +++++ .../kotlin/kotlin-lombok/kotlin-lombok.pom | 33 +++++ .../kotlin/kotlin-noarg/kotlin-noarg.pom | 33 +++++ .../kotlin-power-assert.pom | 33 +++++ .../kotlin-sam-with-receiver.pom | 33 +++++ .../kotlin-serialization.pom | 33 +++++ .../buildsrc-compat/build.gradle.kts | 13 +- .../src/main/kotlin/GradleCommon.kt | 2 + ...dle-plugin-common-configuration.gradle.kts | 7 + ...plugin-dependency-configuration.gradle.kts | 7 + .../test/kotlin/GradlePluginVariantTest.kt | 25 ++++ 17 files changed, 521 insertions(+), 2 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/gradle85/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt create mode 100644 repo/gradle-build-conventions/buildsrc-compat/src/test/kotlin/GradlePluginVariantTest.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt index 6a1256cdb27..6ebf1511ada 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt @@ -224,7 +224,7 @@ class SimpleKotlinGradleIT : KGPBaseTest() { project("kotlinProject", gradleVersion) { build("help") { val expectedVariant = when (gradleVersion) { - GradleVersion.version(TestVersions.Gradle.G_8_5) -> "gradle82" + GradleVersion.version(TestVersions.Gradle.G_8_5) -> "gradle85" GradleVersion.version(TestVersions.Gradle.G_8_4) -> "gradle82" GradleVersion.version(TestVersions.Gradle.G_8_3) -> "gradle82" GradleVersion.version(TestVersions.Gradle.G_8_2) -> "gradle82" diff --git a/libraries/tools/kotlin-gradle-plugin/src/gradle85/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt b/libraries/tools/kotlin-gradle-plugin/src/gradle85/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt new file mode 100644 index 00000000000..817b11a36f9 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/gradle85/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt @@ -0,0 +1,137 @@ +/* + * Copyright 2010-2022 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.plugin + +import com.android.build.gradle.BaseExtension +import org.gradle.api.Named +import org.gradle.api.NamedDomainObjectContainer +import org.gradle.api.Project +import org.gradle.api.file.SourceDirectorySet +import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry +import javax.inject.Inject + +private const val PLUGIN_VARIANT_NAME = "gradle85" + +open class KotlinPluginWrapper @Inject constructor( + registry: ToolingModelBuilderRegistry +) : AbstractKotlinPluginWrapper(registry) { + + override val pluginVariant: String = PLUGIN_VARIANT_NAME + + override fun apply(project: Project) { + project.registerVariantImplementations() + super.apply(project) + } +} + +open class KotlinCommonPluginWrapper @Inject constructor( + registry: ToolingModelBuilderRegistry +) : AbstractKotlinCommonPluginWrapper(registry) { + + override val pluginVariant: String = PLUGIN_VARIANT_NAME + + override fun apply(project: Project) { + project.registerVariantImplementations() + super.apply(project) + } +} + +open class KotlinAndroidPluginWrapper @Inject constructor( + registry: ToolingModelBuilderRegistry +) : AbstractKotlinAndroidPluginWrapper(registry) { + + override val pluginVariant: String = PLUGIN_VARIANT_NAME + + override fun apply(project: Project) { + project.registerVariantImplementations() + super.apply(project) + } +} + +@Suppress("DEPRECATION_ERROR") +open class Kotlin2JsPluginWrapper @Inject constructor( + registry: ToolingModelBuilderRegistry +) : AbstractKotlin2JsPluginWrapper(registry) { + + override val pluginVariant: String = PLUGIN_VARIANT_NAME + + override fun apply(project: Project) { + project.registerVariantImplementations() + super.apply(project) + } +} + +open class KotlinMultiplatformPluginWrapper : AbstractKotlinMultiplatformPluginWrapper() { + + override val pluginVariant: String = PLUGIN_VARIANT_NAME + + override fun apply(project: Project) { + project.registerVariantImplementations() + super.apply(project) + } +} + +open class KotlinJsPluginWrapper : AbstractKotlinJsPluginWrapper() { + + override val pluginVariant: String = PLUGIN_VARIANT_NAME + + override fun apply(project: Project) { + project.registerVariantImplementations() + super.apply(project) + } +} + +open class KotlinPlatformJvmPlugin : KotlinPlatformImplementationPluginBase("jvm") { + override fun apply(project: Project) { + project.applyPlugin() + super.apply(project) + } +} + +open class KotlinPlatformJsPlugin : KotlinPlatformImplementationPluginBase("js") { + override fun apply(project: Project) { + @Suppress("DEPRECATION_ERROR") + project.applyPlugin() + super.apply(project) + } +} + +open class KotlinPlatformAndroidPlugin : KotlinPlatformImplementationPluginBase("android") { + override fun apply(project: Project) { + project.applyPlugin() + super.apply(project) + } + + override fun namedSourceSetsContainer(project: Project): NamedDomainObjectContainer<*> = + (project.extensions.getByName("android") as BaseExtension).sourceSets + + override fun addCommonSourceSetToPlatformSourceSet(commonSourceSet: Named, platformProject: Project) { + val androidExtension = platformProject.extensions.getByName("android") as BaseExtension + val androidSourceSet = androidExtension.sourceSets.findByName(commonSourceSet.name) ?: return + val kotlinSourceSet = androidSourceSet.getExtension(KOTLIN_DSL_NAME) + ?: return + kotlinSourceSet.source(getKotlinSourceDirectorySetSafe(commonSourceSet)!!) + } +} + +open class KotlinPlatformCommonPlugin : KotlinPlatformPluginBase("common") { + override fun apply(project: Project) { + project.applyPlugin() + warnAboutKotlin12xMppDeprecation(project) + } +} + +open class KotlinApiPlugin : KotlinBaseApiPlugin() { + override fun apply(project: Project) { + project.registerVariantImplementations() + super.apply(project) + } +} + +@Suppress("UnusedReceiverParameter") +private fun Project.registerVariantImplementations() { + +} diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/atomicfu/atomicfu.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/atomicfu/atomicfu.pom index a5e9106f013..b02a1439b71 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/atomicfu/atomicfu.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/atomicfu/atomicfu.pom @@ -338,5 +338,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + org.jetbrains.kotlin + kotlin-reflect + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + + + org.jetbrains.kotlin + kotlin-stdlib-jdk7 + + + org.jetbrains.kotlin + kotlin-stdlib + + + org.jetbrains.kotlin + kotlin-script-runtime + + + org.jetbrains.kotlin + kotlin-stdlib-common + + + true + diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/js-plain-objects/js-plain-objects.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/js-plain-objects/js-plain-objects.pom index b455aac798a..afa1d30fa89 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/js-plain-objects/js-plain-objects.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/js-plain-objects/js-plain-objects.pom @@ -338,5 +338,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + org.jetbrains.kotlin + kotlin-reflect + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + + + org.jetbrains.kotlin + kotlin-stdlib-jdk7 + + + org.jetbrains.kotlin + kotlin-stdlib + + + org.jetbrains.kotlin + kotlin-script-runtime + + + org.jetbrains.kotlin + kotlin-stdlib-common + + + true + diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-allopen/kotlin-allopen.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-allopen/kotlin-allopen.pom index bc88e912fc8..edfef57ddd0 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-allopen/kotlin-allopen.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-allopen/kotlin-allopen.pom @@ -370,5 +370,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + org.jetbrains.kotlin + kotlin-reflect + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + + + org.jetbrains.kotlin + kotlin-stdlib-jdk7 + + + org.jetbrains.kotlin + kotlin-stdlib + + + org.jetbrains.kotlin + kotlin-script-runtime + + + org.jetbrains.kotlin + kotlin-stdlib-common + + + true + diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-assignment/kotlin-assignment.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-assignment/kotlin-assignment.pom index 98ecbe74933..3daa3f2f5ae 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-assignment/kotlin-assignment.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-assignment/kotlin-assignment.pom @@ -370,5 +370,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + org.jetbrains.kotlin + kotlin-reflect + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + + + org.jetbrains.kotlin + kotlin-stdlib-jdk7 + + + org.jetbrains.kotlin + kotlin-stdlib + + + org.jetbrains.kotlin + kotlin-script-runtime + + + org.jetbrains.kotlin + kotlin-stdlib-common + + + true + diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-gradle-plugin-model/kotlin-gradle-plugin-model.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-gradle-plugin-model/kotlin-gradle-plugin-model.pom index 8835619694b..db4c45daa33 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-gradle-plugin-model/kotlin-gradle-plugin-model.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-gradle-plugin-model/kotlin-gradle-plugin-model.pom @@ -338,5 +338,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + org.jetbrains.kotlin + kotlin-reflect + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + + + org.jetbrains.kotlin + kotlin-stdlib-jdk7 + + + org.jetbrains.kotlin + kotlin-stdlib + + + org.jetbrains.kotlin + kotlin-script-runtime + + + org.jetbrains.kotlin + kotlin-stdlib-common + + + true + diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-lombok/kotlin-lombok.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-lombok/kotlin-lombok.pom index 32e2ab9a376..f1331346b3c 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-lombok/kotlin-lombok.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-lombok/kotlin-lombok.pom @@ -370,5 +370,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + org.jetbrains.kotlin + kotlin-reflect + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + + + org.jetbrains.kotlin + kotlin-stdlib-jdk7 + + + org.jetbrains.kotlin + kotlin-stdlib + + + org.jetbrains.kotlin + kotlin-script-runtime + + + org.jetbrains.kotlin + kotlin-stdlib-common + + + true + diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-noarg/kotlin-noarg.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-noarg/kotlin-noarg.pom index d3a6acc9bb5..20ee5875bac 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-noarg/kotlin-noarg.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-noarg/kotlin-noarg.pom @@ -370,5 +370,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + org.jetbrains.kotlin + kotlin-reflect + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + + + org.jetbrains.kotlin + kotlin-stdlib-jdk7 + + + org.jetbrains.kotlin + kotlin-stdlib + + + org.jetbrains.kotlin + kotlin-script-runtime + + + org.jetbrains.kotlin + kotlin-stdlib-common + + + true + diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-power-assert/kotlin-power-assert.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-power-assert/kotlin-power-assert.pom index 3443c0c00f6..0c98886d61a 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-power-assert/kotlin-power-assert.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-power-assert/kotlin-power-assert.pom @@ -370,5 +370,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + org.jetbrains.kotlin + kotlin-reflect + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + + + org.jetbrains.kotlin + kotlin-stdlib-jdk7 + + + org.jetbrains.kotlin + kotlin-stdlib + + + org.jetbrains.kotlin + kotlin-script-runtime + + + org.jetbrains.kotlin + kotlin-stdlib-common + + + true + diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-sam-with-receiver/kotlin-sam-with-receiver.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-sam-with-receiver/kotlin-sam-with-receiver.pom index 5a500b16931..39d8b054df6 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-sam-with-receiver/kotlin-sam-with-receiver.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-sam-with-receiver/kotlin-sam-with-receiver.pom @@ -370,5 +370,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + org.jetbrains.kotlin + kotlin-reflect + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + + + org.jetbrains.kotlin + kotlin-stdlib-jdk7 + + + org.jetbrains.kotlin + kotlin-stdlib + + + org.jetbrains.kotlin + kotlin-script-runtime + + + org.jetbrains.kotlin + kotlin-stdlib-common + + + true + diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-serialization/kotlin-serialization.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-serialization/kotlin-serialization.pom index 7d9fe1cd7fa..009c480db51 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-serialization/kotlin-serialization.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-serialization/kotlin-serialization.pom @@ -338,5 +338,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + org.jetbrains.kotlin + kotlin-reflect + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + + + org.jetbrains.kotlin + kotlin-stdlib-jdk7 + + + org.jetbrains.kotlin + kotlin-stdlib + + + org.jetbrains.kotlin + kotlin-script-runtime + + + org.jetbrains.kotlin + kotlin-stdlib-common + + + true + diff --git a/repo/gradle-build-conventions/buildsrc-compat/build.gradle.kts b/repo/gradle-build-conventions/buildsrc-compat/build.gradle.kts index 54544e83c9c..735e8c146fa 100644 --- a/repo/gradle-build-conventions/buildsrc-compat/build.gradle.kts +++ b/repo/gradle-build-conventions/buildsrc-compat/build.gradle.kts @@ -120,6 +120,17 @@ dependencies { implementation("org.jetbrains.kotlin:kotlin-reflect:${project.bootstrapKotlinVersion}") implementation(libs.gson) implementation(libs.kotlinx.metadataJvm) + + testImplementation(libs.junit.jupiter.api) + testRuntimeOnly(libs.junit.platform.launcher) + testRuntimeOnly(libs.junit.jupiter.engine) +} + +tasks.withType().configureEach { + useJUnitPlatform() +} + +tasks.register("checkBuild") { + dependsOn("test") } -tasks.register("checkBuild") diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/GradleCommon.kt b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/GradleCommon.kt index f22ef81cb07..a72a5790ed2 100644 --- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/GradleCommon.kt +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/GradleCommon.kt @@ -45,6 +45,7 @@ import java.net.URL * * [minimalSupportedGradleVersion] - minimal Gradle version that is supported in this variant * [gradleApiVersion] - Gradle API dependency version. Usually should be the same as [minimalSupportedGradleVersion]. + * [gradleApiJavadocUrl] - Gradle URL for the given API. Last enum entry should always point to 'current'. */ enum class GradlePluginVariant( val sourceSetName: String, @@ -61,6 +62,7 @@ enum class GradlePluginVariant( GRADLE_80("gradle80", "8.0", "8.0", "https://docs.gradle.org/8.0.2/javadoc/"), GRADLE_81("gradle81", "8.1", "8.1", "https://docs.gradle.org/8.1.1/javadoc/"), GRADLE_82("gradle82", "8.2", "8.2", "https://docs.gradle.org/8.2.1/javadoc/"), + GRADLE_85("gradle85", "8.5", "8.5", "https://docs.gradle.org/current/javadoc/"), } val commonSourceSetName = "common" diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/gradle-plugin-common-configuration.gradle.kts b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/gradle-plugin-common-configuration.gradle.kts index acfac1ba660..f1c5bd66de3 100644 --- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/gradle-plugin-common-configuration.gradle.kts +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/gradle-plugin-common-configuration.gradle.kts @@ -117,4 +117,11 @@ if (!kotlinBuildProperties.isInJpsBuildIdeaSync) { commonSourceSet = commonSourceSet ) publishShadowedJar(gradle82SourceSet, commonSourceSet) + + // Used for Gradle 8.5+ versions + val gradle85SourceSet = createGradlePluginVariant( + GradlePluginVariant.GRADLE_85, + commonSourceSet = commonSourceSet + ) + publishShadowedJar(gradle85SourceSet, commonSourceSet) } diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/gradle-plugin-dependency-configuration.gradle.kts b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/gradle-plugin-dependency-configuration.gradle.kts index 751a83d66a2..e683ed95780 100644 --- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/gradle-plugin-dependency-configuration.gradle.kts +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/gradle-plugin-dependency-configuration.gradle.kts @@ -76,6 +76,13 @@ createGradlePluginVariant( isGradlePlugin = false ) +// Used for Gradle 8.5+ versions +createGradlePluginVariant( + GradlePluginVariant.GRADLE_85, + commonSourceSet = commonSourceSet, + isGradlePlugin = false +) + publishing { publications { register(DEFAULT_MAIN_PUBLICATION_NAME) { diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/test/kotlin/GradlePluginVariantTest.kt b/repo/gradle-build-conventions/buildsrc-compat/src/test/kotlin/GradlePluginVariantTest.kt new file mode 100644 index 00000000000..1ce863a29e4 --- /dev/null +++ b/repo/gradle-build-conventions/buildsrc-compat/src/test/kotlin/GradlePluginVariantTest.kt @@ -0,0 +1,25 @@ +import org.junit.jupiter.api.Assertions.* +import org.junit.jupiter.api.Test + +class GradlePluginVariantTest { + + @Test + fun testLatestGradleVariantUsesCurrentDocs() { + val lastVariant = GradlePluginVariant.values().last() + + assertEquals( + "https://docs.gradle.org/current/javadoc/", + lastVariant.gradleApiJavadocUrl + ) + } + + @Test + fun testNonLatestGradleVariantDoesNotUseCurrentDocs() { + GradlePluginVariant.values().dropLast(1).forEach { + assertNotEquals( + "https://docs.gradle.org/current/javadoc/", + it.gradleApiJavadocUrl + ) + } + } +} \ No newline at end of file