From 8a58ada4cd0f8a38ebbe116f1c0aa8ba73655286 Mon Sep 17 00:00:00 2001 From: Konstantin Tskhovrebov Date: Fri, 25 Sep 2020 10:58:58 +0300 Subject: [PATCH] Fix version parser for versions without status "1.4-M1-42-IJ2020.1-1". --- .../idea/KotlinPluginCompatibilityVerifier.kt | 5 ++--- ...ompatibilityVerifierVersionComparisonTest.kt | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinPluginCompatibilityVerifier.kt b/idea/src/org/jetbrains/kotlin/idea/KotlinPluginCompatibilityVerifier.kt index 39b5417514c..114add1da25 100644 --- a/idea/src/org/jetbrains/kotlin/idea/KotlinPluginCompatibilityVerifier.kt +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinPluginCompatibilityVerifier.kt @@ -9,7 +9,6 @@ import com.intellij.openapi.application.ApplicationInfo import com.intellij.openapi.ui.Messages import com.intellij.util.PlatformUtils import com.intellij.util.text.nullize -import org.intellij.lang.annotations.RegExp object KotlinPluginCompatibilityVerifier { @JvmStatic @@ -29,7 +28,7 @@ object KotlinPluginCompatibilityVerifier { data class KotlinPluginVersion( val kotlinVersion: String, // 1.2.3 val milestone: String?, // M1 - val status: String, // release, eap, rc + val status: String?, // release, eap, rc val buildNumber: String?, // 53 val platformVersion: PlatformVersion, val patchNumber: String // usually '1' @@ -38,7 +37,7 @@ data class KotlinPluginVersion( private const val KOTLIN_VERSION_REGEX_STRING = "^([\\d.]+)" + // Version number, like 1.3.50 "(?:-(M\\d+))?" + // (Optional) M-release, like M2 - "-([A-Za-z]+)" + // status, like 'eap/dev/release' + "(?:-([A-Za-z]+))?" + // (Optional) status, like 'eap/dev/release' "(?:-(\\d+))?" + // (Optional) buildNumber (absent for 'release') "-([A-Za-z0-9.]+)" + // Platform version, like Studio4.0.1 "-(\\d+)$" // Tooling update, like '-1' diff --git a/idea/tests/org/jetbrains/kotlin/test/CompatibilityVerifierVersionComparisonTest.kt b/idea/tests/org/jetbrains/kotlin/test/CompatibilityVerifierVersionComparisonTest.kt index 5fbb528f7f2..636e25bbdb7 100644 --- a/idea/tests/org/jetbrains/kotlin/test/CompatibilityVerifierVersionComparisonTest.kt +++ b/idea/tests/org/jetbrains/kotlin/test/CompatibilityVerifierVersionComparisonTest.kt @@ -43,6 +43,23 @@ class CompatibilityVerifierVersionComparisonTest : LightPlatformTestCase() { assertEquals("1", version.patchNumber) } + fun testMilestoneVersionWithoutStatus() { + val version = KotlinPluginVersion.parse("1.4-M1-42-IJ2020.1-1") ?: throw AssertionError("Version should not be null") + + assertEquals("1.4", version.kotlinVersion) + assertEquals("M1", version.milestone) + assertEquals("42", version.buildNumber) + assertEquals(PlatformVersion.Platform.IDEA, version.platformVersion.platform) + assertEquals("2020.1", version.platformVersion.version) + assertEquals("1", version.patchNumber) + } + + fun testInvalidVersion() { + val version = KotlinPluginVersion.parse("1.4-release-M5-IJ2020.1-1") + + assertNull(version) + } + fun testPlatformVersionParsing() { PlatformVersion.getCurrent() ?: throw AssertionError("Version should not be null") }