[K/N][build] Change MetaVersion to inline class from enum

Support meta versions strings other than pre-defined. All enum entries
were left for source-level compatibility.
This commit is contained in:
Pavel Punegov
2022-02-17 12:54:54 +03:00
parent 4d388118f8
commit 4644562e7f
4 changed files with 59 additions and 21 deletions
@@ -90,7 +90,6 @@ class NativeCompilerVersionTest {
assertFailsWith<IllegalArgumentException> { CompilerVersion.fromString("1.5.30-M1-dev-123") }
assertFailsWith<IllegalArgumentException> { CompilerVersion.fromString("1.5.30-M1-release-123") }
assertFailsWith<IllegalArgumentException> { CompilerVersion.fromString("1.5.30.40-release-123") }
assertFailsWith<IllegalStateException> { CompilerVersion.fromString("1.6.0-M3-123") }
}
@Test
@@ -123,4 +122,43 @@ class NativeCompilerVersionTest {
}
assertEquals("1.5.30-PUB-140", CompilerVersionImpl(MetaVersion.PUB, 1, 5, 30, -1, 140).toString())
}
@Test
fun betasAndRCs() {
"1.7.0-RC".parseCompilerVersion().apply {
assertEquals(1, major)
assertEquals(7, minor)
assertEquals(0, maintenance)
assertEquals(MetaVersion.RC, meta)
assertEquals(-1, build)
}
"1.7.0-RC2".parseCompilerVersion().apply {
assertEquals(1, major)
assertEquals(7, minor)
assertEquals(0, maintenance)
assertEquals(MetaVersion("RC2"), meta)
assertEquals(-1, build)
}
"1.7.0-RC2-123".parseCompilerVersion().apply {
assertEquals(1, major)
assertEquals(7, minor)
assertEquals(0, maintenance)
assertEquals(MetaVersion("RC2"), meta)
assertEquals(123, build)
}
"1.7.0-Beta".parseCompilerVersion().apply {
assertEquals(1, major)
assertEquals(7, minor)
assertEquals(0, maintenance)
assertEquals(MetaVersion.BETA, meta)
assertEquals(-1, build)
}
"1.7.0-Beta2".parseCompilerVersion().apply {
assertEquals(1, major)
assertEquals(7, minor)
assertEquals(0, maintenance)
assertEquals(MetaVersion("Beta2"), meta)
assertEquals(-1, build)
}
}
}