[K/N][build] Define meta versions order and comparing
Move isAtLeast() from compiler downloader and test to CompilerVersion.kt
This commit is contained in:
@@ -76,3 +76,11 @@ data class CompilerVersionImpl(
|
||||
|
||||
override fun toString() = versionString
|
||||
}
|
||||
|
||||
fun CompilerVersion.isAtLeast(compilerVersion: CompilerVersion): Boolean {
|
||||
if (this.major != compilerVersion.major) return this.major > compilerVersion.major
|
||||
if (this.minor != compilerVersion.minor) return this.minor > compilerVersion.minor
|
||||
if (this.maintenance != compilerVersion.maintenance) return this.maintenance > compilerVersion.maintenance
|
||||
if (this.meta != compilerVersion.meta) return this.meta > compilerVersion.meta
|
||||
return this.build >= compilerVersion.build
|
||||
}
|
||||
@@ -5,21 +5,30 @@
|
||||
package org.jetbrains.kotlin.konan
|
||||
|
||||
inline class MetaVersion(val metaString: String) {
|
||||
operator fun compareTo(other: MetaVersion): Int {
|
||||
if (metaOrder.contains(this)) {
|
||||
if (metaOrder.contains(other)) {
|
||||
return metaOrder.indexOf(this).compareTo(metaOrder.indexOf(other))
|
||||
}
|
||||
}
|
||||
return metaString.compareTo(other.metaString)
|
||||
}
|
||||
|
||||
companion object {
|
||||
// Following meta versions are left for source-level compatibility
|
||||
val DEV = MetaVersion("dev")
|
||||
val DEV_GOOGLE = MetaVersion("dev-google-pr")
|
||||
val EAP = MetaVersion("eap")
|
||||
val BETA = MetaVersion("Beta")
|
||||
val M1 = MetaVersion("M1")
|
||||
val M2 = MetaVersion("M2")
|
||||
val RC = MetaVersion("RC")
|
||||
val PUB = MetaVersion("PUB")
|
||||
val RELEASE = MetaVersion("release")
|
||||
|
||||
fun findAppropriate(metaString: String): MetaVersion =
|
||||
listOf(DEV, DEV_GOOGLE, EAP, BETA, M1, M2, RC, PUB, RELEASE)
|
||||
.find { it.metaString.equals(metaString, ignoreCase = true) }
|
||||
?: if (metaString.isBlank()) RELEASE else MetaVersion(metaString)
|
||||
// Defines order of meta versions
|
||||
private val metaOrder = listOf(DEV, DEV_GOOGLE, EAP, BETA, RC, PUB, RELEASE)
|
||||
|
||||
fun findAppropriate(metaString: String): MetaVersion = metaOrder
|
||||
.find { it.metaString.equals(metaString, ignoreCase = true) }
|
||||
?: if (metaString.isBlank()) RELEASE else MetaVersion(metaString) // should it be lowercased?
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,10 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.native
|
||||
|
||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
||||
import org.jetbrains.kotlin.konan.CompilerVersionImpl
|
||||
import org.jetbrains.kotlin.konan.MetaVersion
|
||||
import org.jetbrains.kotlin.konan.parseCompilerVersion
|
||||
import org.jetbrains.kotlin.konan.*
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
import kotlin.test.*
|
||||
@@ -62,20 +59,6 @@ class NativeCompilerVersionTest {
|
||||
assertEquals(MetaVersion.DEV, meta)
|
||||
assertEquals(1, build)
|
||||
}
|
||||
"1.6.10-M1-3".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(6, minor)
|
||||
assertEquals(10, maintenance)
|
||||
assertEquals(MetaVersion.M1, meta)
|
||||
assertEquals(3, build)
|
||||
}
|
||||
"1.6.20-M2".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(6, minor)
|
||||
assertEquals(20, maintenance)
|
||||
assertEquals(MetaVersion.M2, meta)
|
||||
assertEquals(-1, build)
|
||||
}
|
||||
"1.6.10-RC".parseCompilerVersion().apply {
|
||||
assertEquals(1, major)
|
||||
assertEquals(6, minor)
|
||||
@@ -161,4 +144,17 @@ class NativeCompilerVersionTest {
|
||||
assertEquals(-1, build)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun metaVersionOrder() {
|
||||
assertTrue("1.7.0-RC2".parseCompilerVersion().isAtLeast("1.7.0-RC".parseCompilerVersion()))
|
||||
assertTrue("1.7.0-RC".parseCompilerVersion().isAtLeast("1.7.0-BETA".parseCompilerVersion()))
|
||||
assertTrue("1.7.0-RC".parseCompilerVersion().isAtLeast("1.7.0-BETA2".parseCompilerVersion()))
|
||||
assertTrue("1.7.0-RC2".parseCompilerVersion().isAtLeast("1.7.0-BETA3".parseCompilerVersion()))
|
||||
assertTrue("1.7.0-release".parseCompilerVersion().isAtLeast("1.7.0-RC".parseCompilerVersion()))
|
||||
assertTrue("1.7.0-release".parseCompilerVersion().isAtLeast("1.7.0-RC3".parseCompilerVersion()))
|
||||
assertTrue("1.7.0-release".parseCompilerVersion().isAtLeast("1.7.0-dev-1234".parseCompilerVersion()))
|
||||
assertTrue("1.7.0-eap1".parseCompilerVersion().isAtLeast("1.7.0-eap".parseCompilerVersion()))
|
||||
assertTrue("1.7.0-eap1".parseCompilerVersion().isAtLeast("1.7.0-eap-134".parseCompilerVersion()))
|
||||
}
|
||||
}
|
||||
+1
-8
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.gradle.util.modify
|
||||
import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader
|
||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
||||
import org.jetbrains.kotlin.konan.CompilerVersionImpl
|
||||
import org.jetbrains.kotlin.konan.isAtLeast
|
||||
import org.jetbrains.kotlin.konan.target.HostManager
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import org.jetbrains.kotlin.konan.target.presetName
|
||||
@@ -65,14 +66,6 @@ class NativePlatformLibsIT : BaseGradleIT() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun CompilerVersion.isAtLeast(compilerVersion: CompilerVersion): Boolean {
|
||||
if (this.major != compilerVersion.major) return this.major > compilerVersion.major
|
||||
if (this.minor != compilerVersion.minor) return this.minor > compilerVersion.minor
|
||||
if (this.maintenance != compilerVersion.maintenance) return this.maintenance > compilerVersion.maintenance
|
||||
if (this.meta.ordinal != compilerVersion.meta.ordinal) return this.meta.ordinal > compilerVersion.meta.ordinal
|
||||
return this.build >= compilerVersion.build
|
||||
}
|
||||
|
||||
private fun simpleOsName(compilerVersion: CompilerVersion): String =
|
||||
if (compilerVersion.isAtLeast(CompilerVersionImpl(major = 1, minor = 5, maintenance = 30, build = 1466))) {
|
||||
HostManager.platformName()
|
||||
|
||||
+1
-7
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.gradle.targets.native.internal.NativeDistributionTyp
|
||||
import org.jetbrains.kotlin.konan.CompilerVersion
|
||||
import org.jetbrains.kotlin.konan.CompilerVersionImpl
|
||||
import org.jetbrains.kotlin.konan.MetaVersion
|
||||
import org.jetbrains.kotlin.konan.isAtLeast
|
||||
import org.jetbrains.kotlin.konan.target.HostManager
|
||||
import org.jetbrains.kotlin.konan.util.DependencyDirectories
|
||||
import java.io.File
|
||||
@@ -50,13 +51,6 @@ class NativeCompilerDownloader(
|
||||
|
||||
private val simpleOsName: String
|
||||
get() {
|
||||
fun CompilerVersion.isAtLeast(compilerVersion: CompilerVersion): Boolean {
|
||||
if (this.major != compilerVersion.major) return this.major > compilerVersion.major
|
||||
if (this.minor != compilerVersion.minor) return this.minor > compilerVersion.minor
|
||||
if (this.maintenance != compilerVersion.maintenance) return this.maintenance > compilerVersion.maintenance
|
||||
if (this.meta.ordinal != compilerVersion.meta.ordinal) return this.meta.ordinal > compilerVersion.meta.ordinal
|
||||
return this.build >= compilerVersion.build
|
||||
}
|
||||
return if (compilerVersion.isAtLeast(CompilerVersionImpl(major = 1, minor = 5, maintenance = 30, build = 1466))) {
|
||||
HostManager.platformName()
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user