From 496058c7e1db489fb90ad713aaa6f08ac532b017 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 7 Sep 2022 11:34:26 +0200 Subject: [PATCH] Forbid handling dashed in KotlinToolingVersion parsing --- .../kotlin/tooling/core/KotlinToolingVersion.kt | 8 ++++---- .../kotlin/tooling/core/KotlinToolingVersionTest.kt | 13 +++++++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/KotlinToolingVersion.kt b/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/KotlinToolingVersion.kt index a7fa6019fbf..8fa98bff0f0 100644 --- a/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/KotlinToolingVersion.kt +++ b/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/KotlinToolingVersion.kt @@ -50,10 +50,10 @@ class KotlinToolingVersion( when { classifier == null || classifier.matches(Regex("""(release-)?\d+""")) -> Maturity.STABLE classifier == "snapshot" -> Maturity.SNAPSHOT - classifier.matches(Regex("""(rc)(\d*)?(-release)?-?\d*""")) -> Maturity.RC - classifier.matches(Regex("""beta(\d*)?(-release)?-?\d*""")) -> Maturity.BETA - classifier.matches(Regex("""alpha(\d*)?(-release)?-?\d*""")) -> Maturity.ALPHA - classifier.matches(Regex("""m\d+(-release)?(-\d*)?""")) -> Maturity.MILESTONE + classifier.matches(Regex("""(rc)(\d*)?(-release)?(-?\d+)?""")) -> Maturity.RC + classifier.matches(Regex("""beta(\d*)?(-release)?(-?\d+)?""")) -> Maturity.BETA + classifier.matches(Regex("""alpha(\d*)?(-release)?(-?\d+)?""")) -> Maturity.ALPHA + classifier.matches(Regex("""m\d+(-release)?(-\d+)?""")) -> Maturity.MILESTONE classifier.matches(Regex("""([a-zA-Z]{3,})(-[a-zA-Z]\w*)*(-\d+)?""")) -> Maturity.DEV else -> throw IllegalArgumentException("Can't infer maturity of KotlinVersion $this") } diff --git a/libraries/tools/kotlin-tooling-core/src/test/kotlin/org/jetbrains/kotlin/tooling/core/KotlinToolingVersionTest.kt b/libraries/tools/kotlin-tooling-core/src/test/kotlin/org/jetbrains/kotlin/tooling/core/KotlinToolingVersionTest.kt index 90571bfff5c..2b40ceb0460 100644 --- a/libraries/tools/kotlin-tooling-core/src/test/kotlin/org/jetbrains/kotlin/tooling/core/KotlinToolingVersionTest.kt +++ b/libraries/tools/kotlin-tooling-core/src/test/kotlin/org/jetbrains/kotlin/tooling/core/KotlinToolingVersionTest.kt @@ -178,17 +178,26 @@ class KotlinToolingVersionTest { @Test fun maturityWithAdditionalReleaseSuffix() { assertMaturity(MILESTONE, "1.6.20-M1-release") + assertMaturity(null, "1.6.20-M1-release1") assertMaturity(MILESTONE, "1.6.20-M1-release-22") + assertMaturity(null, "1.6.20-M1-release-", "Forbid handling dash") assertMaturity(ALPHA, "1.6.20-alpha-release") + assertMaturity(ALPHA, "1.6.20-alpha-release1") assertMaturity(ALPHA, "1.6.20-alpha-release39") + assertMaturity(null, "1.6.20-alpha-release-", "Forbid handling dash") assertMaturity(BETA, "1.6.20-beta2-release") + assertMaturity(BETA, "1.6.20-beta2-release1") + assertMaturity(BETA, "1.6.20-beta2-release-1") + assertMaturity(null, "1.6.20-beta2-release-", "Forbid handling dash") assertMaturity(RC, "1.6.20-rc1-release") + assertMaturity(RC, "1.6.20-rc1-release1") + assertMaturity(RC, "1.6.20-rc1-release-1") + assertMaturity(null, "1.6.20-rc1-release-", "Forbid handling dash") } @Test fun invalidMilestoneVersion() { - val exception = assertFailsWith { KotlinToolingVersion("1.6.20-M") } - assertTrue("maturity" in exception.message.orEmpty().toLowerCase(), "Expected 'maturity' issue mentioned in error message") + assertMaturity(null, "1.6.20-M") } @Test