KotlinToolingVersion: Support -release in versions

This commit is contained in:
sebastian.sellmair
2022-03-17 10:31:04 +01:00
committed by Space
parent 87c339f637
commit 6800475202
2 changed files with 56 additions and 7 deletions
@@ -47,10 +47,10 @@ class KotlinToolingVersion(
val classifier = this.classifier?.toLowerCase(Locale.ROOT)
return when {
classifier == null || classifier.matches(Regex("""(release-)?\d+""")) -> Maturity.STABLE
classifier.matches(Regex("""(rc)(\d*)?-?\d*""")) -> Maturity.RC
classifier.matches(Regex("""beta(\d*)?-?\d*""")) -> Maturity.BETA
classifier.matches(Regex("""alpha(\d*)?-?\d*""")) -> Maturity.ALPHA
classifier.matches(Regex("""m\d+(-\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("""dev-?\d*""")) -> Maturity.DEV
classifier == "snapshot" -> Maturity.SNAPSHOT
else -> throw IllegalArgumentException("Can't infer maturity of KotlinVersion $this")
@@ -177,9 +177,9 @@ val KotlinToolingVersion.buildNumber: Int?
return classifier.toIntOrNull()
}
val classifierRegex = Regex("""(.+?)(\d*)?-?(\d*)?""")
val classifierRegex = Regex("""(.+?)(\d*)?(-release)?-?(\d*)?""")
val classifierMatch = classifierRegex.matchEntire(classifier) ?: return null
return classifierMatch.groupValues.getOrNull(3)?.toIntOrNull()
return classifierMatch.groupValues.getOrNull(4)?.toIntOrNull()
}
val KotlinToolingVersion.classifierNumber: Int?
@@ -195,7 +195,7 @@ val KotlinToolingVersion.classifierNumber: Int?
}
val classifierRegex = Regex("""(.+?)(\d*)?-?(\d*)?""")
val classifierRegex = Regex("""(.+?)(\d*)?(-release)?-?(\d*)?""")
val classifierMatch = classifierRegex.matchEntire(classifier) ?: return null
return classifierMatch.groupValues.getOrNull(2)?.toIntOrNull()
}
@@ -189,6 +189,39 @@ class KotlinToolingVersionTest {
)
}
@Test
fun maturityWithAdditionalReleaseSuffix() {
assertEquals(
KotlinToolingVersion.Maturity.MILESTONE,
KotlinToolingVersion("1.6.20-M1-release").maturity
)
assertEquals(
KotlinToolingVersion.Maturity.MILESTONE,
KotlinToolingVersion("1.6.20-M1-release-22").maturity
)
assertEquals(
KotlinToolingVersion.Maturity.ALPHA,
KotlinToolingVersion("1.6.20-alpha-release").maturity
)
assertEquals(
KotlinToolingVersion.Maturity.ALPHA,
KotlinToolingVersion("1.6.20-alpha-release39").maturity
)
assertEquals(
KotlinToolingVersion.Maturity.BETA,
KotlinToolingVersion("1.6.20-beta2-release").maturity
)
assertEquals(
KotlinToolingVersion.Maturity.RC,
KotlinToolingVersion("1.6.20-rc1-release").maturity
)
}
@Test
fun invalidMilestoneVersion() {
val exception = assertFailsWith<IllegalArgumentException> { KotlinToolingVersion("1.6.20-M") }
@@ -203,6 +236,10 @@ class KotlinToolingVersionTest {
assertEquals(510, KotlinToolingVersion("1.6.20-beta1-510").buildNumber)
assertEquals(510, KotlinToolingVersion("1.6.20-alpha1-510").buildNumber)
assertEquals(510, KotlinToolingVersion("1.6.20-m1-510").buildNumber)
assertEquals(510, KotlinToolingVersion("1.6.20-m1-release-510").buildNumber)
assertEquals(510, KotlinToolingVersion("1.6.20-rc1-release-510").buildNumber)
assertEquals(510, KotlinToolingVersion("1.6.20-beta1-release-510").buildNumber)
assertEquals(510, KotlinToolingVersion("1.6.20-alpha1-release-510").buildNumber)
}
@Test
@@ -216,6 +253,18 @@ class KotlinToolingVersionTest {
assertEquals(2, KotlinToolingVersion("1.6.20-beta2").classifierNumber)
assertEquals(2, KotlinToolingVersion("1.6.20-alpha2").classifierNumber)
assertEquals(2, KotlinToolingVersion("1.6.20-m2").classifierNumber)
assertEquals(2, KotlinToolingVersion("1.6.20-rc2-release").classifierNumber)
assertEquals(2, KotlinToolingVersion("1.6.20-rc2-release-510").classifierNumber)
assertEquals(2, KotlinToolingVersion("1.6.20-beta2-release").classifierNumber)
assertEquals(2, KotlinToolingVersion("1.6.20-beta2-release-510").classifierNumber)
assertEquals(2, KotlinToolingVersion("1.6.20-alpha2").classifierNumber)
assertEquals(2, KotlinToolingVersion("1.6.20-alpha2-release").classifierNumber)
assertEquals(2, KotlinToolingVersion("1.6.20-alpha2-release-510").classifierNumber)
assertEquals(2, KotlinToolingVersion("1.6.20-m2").classifierNumber)
assertEquals(2, KotlinToolingVersion("1.6.20-m2-release").classifierNumber)
assertEquals(2, KotlinToolingVersion("1.6.20-m2-release-510").classifierNumber)
}
@Test