KotlinToolingVersion: Allow dev versions with generic classifiers

e.g.:
1.6.20-dev-myWildcard-510 (build number 510)
1.6.20-dev-myWildcard (no build number)
1.6.20-dev-myWildcard510 (no build number)
1.6.20-dev-google-pr210-510 (build number 510)
This commit is contained in:
sebastian.sellmair
2022-06-22 15:19:34 +02:00
committed by Space
parent d015b2b899
commit f996e87528
2 changed files with 58 additions and 1 deletions
@@ -53,7 +53,7 @@ class KotlinToolingVersion(
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|pub)-?\d*""")) -> Maturity.DEV
classifier.matches(Regex("""(dev|pub)(-(\w|-)+)?-?\d*""")) -> Maturity.DEV
classifier == "snapshot" -> Maturity.SNAPSHOT
else -> throw IllegalArgumentException("Can't infer maturity of KotlinVersion $this")
}
@@ -188,6 +188,14 @@ val KotlinToolingVersion.classifierNumber: Int?
get() {
if (classifier == null) return null
/*
dev builds allow additional wildcards in the version (like 1.6.20-dev-myWildcard21-510)
In this case, 510 will be the buildNumber, but there is still no associated classifierNumber.
In order to keep the regex below simple, we fast path out here, since we know that
dev builds never carry classifier numbers
*/
if (maturity == KotlinToolingVersion.Maturity.DEV) return null
/*
Classifiers with only a buildNumber assigned
*/
@@ -127,6 +127,21 @@ class KotlinToolingVersionTest {
)
}
@Test
fun devBuildsWithCustomWildcardsDoNotInfluenceCompareTo() {
assertEquals(
0, KotlinToolingVersion("1.6.20-dev-myWildcard-510").compareTo(KotlinToolingVersion("1.6.20-dev-myOtherWildcard-510"))
)
assertEquals(
0, KotlinToolingVersion("1.6.20-dev-myWildcard-510").compareTo(KotlinToolingVersion("1.6.20-dev-myWildcard2-510"))
)
assertEquals(
0, KotlinToolingVersion("1.6.20-dev-myWildcard1-510").compareTo(KotlinToolingVersion("1.6.20-dev-myWildcard2-510"))
)
}
@Test
fun maturityWithClassifierNumberAndBuildNumber() {
assertEquals(
@@ -208,6 +223,16 @@ class KotlinToolingVersionTest {
KotlinToolingVersion.Maturity.DEV,
KotlinToolingVersion("1.6.20-pUb").maturity
)
assertEquals(
KotlinToolingVersion.Maturity.DEV,
KotlinToolingVersion("1.6.20-dev-google-pr").maturity
)
assertEquals(
KotlinToolingVersion.Maturity.DEV,
KotlinToolingVersion("1.6.20-dev-google-pr-510").maturity
)
}
@Test
@@ -261,6 +286,22 @@ class KotlinToolingVersionTest {
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)
/* dev */
assertEquals(510, KotlinToolingVersion("1.6.20-dev-510").buildNumber)
assertEquals(510, KotlinToolingVersion("1.6.20-pub-510").buildNumber)
assertEquals(510, KotlinToolingVersion("1.6.20-dev-myWildcard-510").buildNumber)
assertEquals(510, KotlinToolingVersion("1.6.20-pub-myWildcard-510").buildNumber)
assertEquals(510, KotlinToolingVersion("1.6.20-dev-myWildcard1-510").buildNumber)
assertEquals(510, KotlinToolingVersion("1.6.20-pub-myWildcard1-510").buildNumber)
assertNull(KotlinToolingVersion("1.6.20-dev-myWildcard510").buildNumber)
/* dev with - in wildcards */
assertEquals(510, KotlinToolingVersion("1.6.20-dev-google-pr-510").buildNumber)
assertEquals(510, KotlinToolingVersion("1.6.20-dev-google-pr-510").buildNumber)
assertEquals(510, KotlinToolingVersion("1.6.20-dev-google-pr210-510").buildNumber)
assertNull(KotlinToolingVersion("1.6.20-dev-google-pr").buildNumber)
assertNull(KotlinToolingVersion("1.6.20-dev-google-pr510").buildNumber)
}
@Test
@@ -286,6 +327,14 @@ class KotlinToolingVersionTest {
assertEquals(2, KotlinToolingVersion("1.6.20-m2-release").classifierNumber)
assertEquals(2, KotlinToolingVersion("1.6.20-m2-release-510").classifierNumber)
assertNull(KotlinToolingVersion("1.6.20-dev-510").classifierNumber)
assertNull(KotlinToolingVersion("1.6.20-pub-510").classifierNumber)
assertNull(KotlinToolingVersion("1.6.20-dev-myWildcard-510").classifierNumber)
assertNull(KotlinToolingVersion("1.6.20-pub-myWildcard-510").classifierNumber)
assertNull(KotlinToolingVersion("1.6.20-dev-myWildcard1-510").classifierNumber)
assertNull(KotlinToolingVersion("1.6.20-pub-myWildcard1-510").classifierNumber)
assertNull(KotlinToolingVersion("1.6.20-dev-myWildcard510").classifierNumber)
assertNull(KotlinToolingVersion("1.6.20-dev-google-pr510").classifierNumber)
}
@Test