[Gradle][IJ-CR-174282] fix: suggest Gradle 9.0.0 instead of Gradle 9.0

### Issues
  * IDEA-378326 Incorrect distributionUrl for Gradle 9

(cherry picked from commit fa1fc5ad14d23fb67d9fb349558f528040fe0165)

GitOrigin-RevId: faef6d7822ee0cc6e053f14537392834e4efa8e5
This commit is contained in:
Sergei Vorobyov
2025-09-01 18:10:50 +02:00
committed by intellij-monorepo-bot
parent 8eeced5680
commit cb7dd9e222
4 changed files with 74 additions and 27 deletions

View File

@@ -19,19 +19,19 @@ internal val DEFAULT_DATA = GradleCompatibilityState(
"6.0", "6.0.1", "6.1", "6.2", "6.3", "6.4", "6.5", "6.6", "6.7", "6.8", "6.8.3", "6.9",
"7.0", "7.1", "7.2", "7.3", "7.4", "7.5", "7.5.1", "7.6",
"8.0", "8.1", "8.2", "8.3", "8.4", "8.5", "8.6", "8.7", "8.8", "8.9", "8.10", "8.10.2", "8.11", "8.12", "8.13", "8.14",
"9.0"
"9.0.0"
),
compatibility = listOf(
VersionMapping(java = "6-8", gradle = "INF-5.0"),
VersionMapping(java = "8-9", gradle = "INF-9.0"),
VersionMapping(java = "9-10", gradle = "4.3-9.0"),
VersionMapping(java = "10-11", gradle = "4.7-9.0"),
VersionMapping(java = "11-12", gradle = "5.0-9.0"),
VersionMapping(java = "12-13", gradle = "5.4-9.0"),
VersionMapping(java = "13-14", gradle = "6.0-9.0"),
VersionMapping(java = "14-15", gradle = "6.3-9.0"),
VersionMapping(java = "15-16", gradle = "6.7-9.0"),
VersionMapping(java = "16-17", gradle = "7.0-9.0"),
VersionMapping(java = "8-9", gradle = "INF-9.0.0"),
VersionMapping(java = "9-10", gradle = "4.3-9.0.0"),
VersionMapping(java = "10-11", gradle = "4.7-9.0.0"),
VersionMapping(java = "11-12", gradle = "5.0-9.0.0"),
VersionMapping(java = "12-13", gradle = "5.4-9.0.0"),
VersionMapping(java = "13-14", gradle = "6.0-9.0.0"),
VersionMapping(java = "14-15", gradle = "6.3-9.0.0"),
VersionMapping(java = "15-16", gradle = "6.7-9.0.0"),
VersionMapping(java = "16-17", gradle = "7.0-9.0.0"),
VersionMapping(java = "17-18", gradle = "7.2-INF"),
VersionMapping(java = "18-19", gradle = "7.5-INF"),
VersionMapping(java = "19-20", gradle = "7.6-INF"),

View File

@@ -99,19 +99,19 @@
"6.0", "6.0.1", "6.1", "6.2", "6.3", "6.4", "6.5", "6.6", "6.7", "6.8", "6.8.3", "6.9",
"7.0", "7.1", "7.2", "7.3", "7.4", "7.5", "7.5.1", "7.6",
"8.0", "8.1", "8.2", "8.3", "8.4", "8.5", "8.6", "8.7", "8.8", "8.9", "8.10", "8.10.2", "8.11", "8.12", "8.13", "8.14",
"9.0"
"9.0.0"
],
"compatibility": [
{"java": "6-8", "gradle": "INF-5.0"},
{"java": "8-9", "gradle": "INF-9.0"},
{"java": "9-10", "gradle": "4.3-9.0"},
{"java": "10-11", "gradle": "4.7-9.0"},
{"java": "11-12", "gradle": "5.0-9.0"},
{"java": "12-13", "gradle": "5.4-9.0"},
{"java": "13-14", "gradle": "6.0-9.0"},
{"java": "14-15", "gradle": "6.3-9.0"},
{"java": "15-16", "gradle": "6.7-9.0"},
{"java": "16-17", "gradle": "7.0-9.0"},
{"java": "8-9", "gradle": "INF-9.0.0"},
{"java": "9-10", "gradle": "4.3-9.0.0"},
{"java": "10-11", "gradle": "4.7-9.0.0"},
{"java": "11-12", "gradle": "5.0-9.0.0"},
{"java": "12-13", "gradle": "5.4-9.0.0"},
{"java": "13-14", "gradle": "6.0-9.0.0"},
{"java": "14-15", "gradle": "6.3-9.0.0"},
{"java": "15-16", "gradle": "6.7-9.0.0"},
{"java": "16-17", "gradle": "7.0-9.0.0"},
{"java": "17-18", "gradle": "7.2-INF"},
{"java": "18-19", "gradle": "7.5-INF"},
{"java": "19-20", "gradle": "7.6-INF"},

View File

@@ -7,11 +7,11 @@ import org.jetbrains.plugins.gradle.jvmcompat.GradleJvmSupportMatrix
class GradleJvmSupportMatricesTest : GradleJvmSupportMatricesTestCase() {
companion object {
private const val FUTURE_GRADLE_VERSION = "100.0"
private const val FUTURE_GRADLE_VERSION = "100.0.0"
private const val LATEST_SUPPORTED_JAVA_VERSION = 24
private const val FUTURE_JAVA_VERSION = 100
private const val BUNDLED_GRADLE_VERSION = "8.14"
private const val LATEST_GRADLE_VERSION = "9.0"
private const val LATEST_GRADLE_VERSION = "9.0.0"
}
fun `test bundled gradle version`() {
@@ -47,8 +47,8 @@ class GradleJvmSupportMatricesTest : GradleJvmSupportMatricesTestCase() {
assertTrue(isSupported("5.4.1", 11))
assertTrue(isSupported("7.5", 11))
assertFalse(isSupported("9.0", 16))
assertTrue(isSupported("9.0", 17))
assertFalse(isSupported("9.0.0", 16))
assertTrue(isSupported("9.0.0", 17))
assertFalse(isSupported("7.1", 17))
assertTrue(isSupported("7.2", 17))
@@ -77,7 +77,7 @@ class GradleJvmSupportMatricesTest : GradleJvmSupportMatricesTestCase() {
assertTrue(isSupported("8.10", 23))
assertTrue(isSupported("8.14", 24))
assertTrue(isSupported("9.0", 24))
assertTrue(isSupported("9.0.0", 24))
}
fun `test suggesting gradle version for java version`() {
@@ -85,6 +85,7 @@ class GradleJvmSupportMatricesTest : GradleJvmSupportMatricesTestCase() {
assertEquals("4.10.3", suggestGradleVersion(7))
assertEquals("8.14", suggestGradleVersion(8))
assertEquals("8.14", suggestGradleVersion(11))
assertEquals(BUNDLED_GRADLE_VERSION, suggestGradleVersion(17))
assertEquals(BUNDLED_GRADLE_VERSION, suggestGradleVersion(19))
assertEquals(BUNDLED_GRADLE_VERSION, suggestGradleVersion(20))
@@ -109,6 +110,7 @@ class GradleJvmSupportMatricesTest : GradleJvmSupportMatricesTestCase() {
assertEquals("4.10.3", suggestLatestSupportedGradleVersion(7))
assertEquals("8.14", suggestLatestSupportedGradleVersion(8))
assertEquals("8.14", suggestLatestSupportedGradleVersion(11))
assertEquals(LATEST_GRADLE_VERSION, suggestLatestSupportedGradleVersion(17))
assertEquals(LATEST_GRADLE_VERSION, suggestLatestSupportedGradleVersion(19))
assertEquals(LATEST_GRADLE_VERSION, suggestLatestSupportedGradleVersion(20))
@@ -147,7 +149,7 @@ class GradleJvmSupportMatricesTest : GradleJvmSupportMatricesTestCase() {
assertEquals(22, suggestLatestSupportedJavaVersion("8.8"))
assertEquals(23, suggestLatestSupportedJavaVersion("8.10"))
assertEquals(24, suggestLatestSupportedJavaVersion("8.14"))
assertEquals(24, suggestLatestSupportedJavaVersion("9.0"))
assertEquals(24, suggestLatestSupportedJavaVersion("9.0.0"))
assertEquals(24, suggestLatestSupportedJavaVersion(FUTURE_GRADLE_VERSION))
}
@@ -189,8 +191,25 @@ class GradleJvmSupportMatricesTest : GradleJvmSupportMatricesTestCase() {
assertEquals(8, suggestOldestSupportedJavaVersion("8.8"))
assertEquals(8, suggestOldestSupportedJavaVersion("8.10"))
assertEquals(8, suggestOldestSupportedJavaVersion("8.14"))
assertEquals(17, suggestOldestSupportedJavaVersion("9.0"))
assertEquals(17, suggestOldestSupportedJavaVersion("9.0.0"))
assertEquals(17, suggestOldestSupportedJavaVersion(FUTURE_GRADLE_VERSION))
}
fun `test Gradle version format`() {
assertSupportedGradleVersion("4.5") { minOrNull() }
assertSupportedGradleVersion("4.10.3") { maxOrNull() }
assertSupportedGradleVersion("5.0") { minOrNull() }
assertSupportedGradleVersion("5.6.2") { maxOrNull() }
assertSupportedGradleVersion("6.0") { minOrNull() }
assertSupportedGradleVersion("6.9") { maxOrNull() }
assertSupportedGradleVersion("7.0") { minOrNull() }
assertSupportedGradleVersion("7.6") { maxOrNull() }
assertSupportedGradleVersion("8.0") { minOrNull() }
assertSupportedGradleVersion("8.14") { maxOrNull() }
assertSupportedGradleVersion("9.0.0") { minOrNull() }
assertSupportedGradleVersion("9.0.0") { maxOrNull() }
assertSupportedGradleVersion(LATEST_GRADLE_VERSION) { maxOrNull() }
}
}

View File

@@ -8,8 +8,16 @@ import com.intellij.util.lang.JavaVersion
import org.gradle.util.GradleVersion
import org.jetbrains.plugins.gradle.jvmcompat.GradleCompatibilitySupportUpdater
import org.jetbrains.plugins.gradle.jvmcompat.GradleJvmSupportMatrix
import org.junit.jupiter.api.Assertions
import java.util.regex.Matcher
import java.util.regex.Pattern
abstract class GradleJvmSupportMatricesTestCase : LightIdeaTestCase() {
private companion object {
val GRADLE_VERSION_PATTERN: Pattern = Pattern.compile("((\\d+)(\\.\\d+)+)(-(\\p{Alpha}+)-(\\w+))?(-(SNAPSHOT|\\d{14}([-+]\\d{4})?))?")
}
override fun setUp() {
super.setUp()
ApplicationManager.getApplication().replaceService(GradleCompatibilitySupportUpdater::class.java,
@@ -38,4 +46,24 @@ abstract class GradleJvmSupportMatricesTestCase : LightIdeaTestCase() {
fun suggestOldestSupportedJavaVersion(gradleVersion: String): Int? =
GradleJvmSupportMatrix.suggestOldestSupportedJavaVersion(GradleVersion.version(gradleVersion))?.feature
fun assertSupportedGradleVersion(gradleVersion: String, chooseGradleVersion: List<GradleVersion>.() -> GradleVersion?) {
val expectedGradleVersion = GradleVersion.version(gradleVersion)
val allSupportedGradleVersions = GradleJvmSupportMatrix.getAllSupportedGradleVersionsByIdea()
val actualGradleVersions = allSupportedGradleVersions
.filter { it.getMajorVersion() == expectedGradleVersion.getMajorVersion() }
Assertions.assertEquals(expectedGradleVersion, actualGradleVersions.chooseGradleVersion()) {
"Incorrect Gradle version format\n" +
"All supported versions = $allSupportedGradleVersions\n" +
"Chosen versions = $actualGradleVersions\n"
}
}
private fun GradleVersion.getMajorVersion(): Int {
val matcher: Matcher = GRADLE_VERSION_PATTERN.matcher(version)
if (!matcher.matches()) {
throw IllegalStateException("Unable to parse Gradle version: $version")
}
return matcher.group(2).toInt(10)
}
}