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("""beta(\d*)?(-release)?-?\d*""")) -> Maturity.BETA
classifier.matches(Regex("""alpha(\d*)?(-release)?-?\d*""")) -> Maturity.ALPHA classifier.matches(Regex("""alpha(\d*)?(-release)?-?\d*""")) -> Maturity.ALPHA
classifier.matches(Regex("""m\d+(-release)?(-\d*)?""")) -> Maturity.MILESTONE 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 classifier == "snapshot" -> Maturity.SNAPSHOT
else -> throw IllegalArgumentException("Can't infer maturity of KotlinVersion $this") else -> throw IllegalArgumentException("Can't infer maturity of KotlinVersion $this")
} }
@@ -188,6 +188,14 @@ val KotlinToolingVersion.classifierNumber: Int?
get() { get() {
if (classifier == null) return null 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 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 @Test
fun maturityWithClassifierNumberAndBuildNumber() { fun maturityWithClassifierNumberAndBuildNumber() {
assertEquals( assertEquals(
@@ -208,6 +223,16 @@ class KotlinToolingVersionTest {
KotlinToolingVersion.Maturity.DEV, KotlinToolingVersion.Maturity.DEV,
KotlinToolingVersion("1.6.20-pUb").maturity 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 @Test
@@ -261,6 +286,22 @@ class KotlinToolingVersionTest {
assertEquals(510, KotlinToolingVersion("1.6.20-rc1-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-beta1-release-510").buildNumber)
assertEquals(510, KotlinToolingVersion("1.6.20-alpha1-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 @Test
@@ -286,6 +327,14 @@ class KotlinToolingVersionTest {
assertEquals(2, KotlinToolingVersion("1.6.20-m2-release").classifierNumber) assertEquals(2, KotlinToolingVersion("1.6.20-m2-release").classifierNumber)
assertEquals(2, KotlinToolingVersion("1.6.20-m2-release-510").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 @Test