mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
fix: Actual functioning version checker
Also testing for potential edge-cases
This commit is contained in:
parent
ec37c0f87d
commit
c17be3831c
2 changed files with 22 additions and 10 deletions
|
@ -18,16 +18,19 @@ data class Version(
|
||||||
throw IllegalArgumentException("Can't compare two different version type")
|
throw IllegalArgumentException("Can't compare two different version type")
|
||||||
}
|
}
|
||||||
|
|
||||||
return when {
|
// On nightly we only care about build number
|
||||||
major > other.major ||
|
if (type == Type.NIGHTLY) return build.compareTo(other.build)
|
||||||
minor > other.minor ||
|
|
||||||
patch > other.patch ||
|
var rt = (major.compareTo(other.major) +
|
||||||
hotfix > other.hotfix ||
|
minor.compareTo(other.minor) +
|
||||||
build > other.build ||
|
patch.compareTo(other.patch) +
|
||||||
stage.weight > other.stage.weight
|
hotfix.compareTo(other.hotfix)).compareTo(0)
|
||||||
-> 1
|
// if semver is equals, check version stage (release (3) > beta (2) > alpha (1))
|
||||||
else -> 0
|
if (rt == 0) rt = stage.weight.compareTo(other.stage.weight)
|
||||||
}
|
// if stage is also equals, we compare build number
|
||||||
|
if (rt == 0) rt = build.compareTo(other.build)
|
||||||
|
|
||||||
|
return rt
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
|
|
|
@ -44,6 +44,7 @@ class AppUpdateCheckerTest {
|
||||||
@Test
|
@Test
|
||||||
fun `Check new beta version`() {
|
fun `Check new beta version`() {
|
||||||
assertFalse(isNewVersion("1.2.3-b1", "1.2.3-b2"))
|
assertFalse(isNewVersion("1.2.3-b1", "1.2.3-b2"))
|
||||||
|
assertFalse(isNewVersion("1.2.2-b3", "1.2.3-b2"))
|
||||||
assertTrue(isNewVersion("1.2.3-b3", "1.2.3-b2"))
|
assertTrue(isNewVersion("1.2.3-b3", "1.2.3-b2"))
|
||||||
assertTrue(isNewVersion("1.2.4-b1", "1.2.3-b1"))
|
assertTrue(isNewVersion("1.2.4-b1", "1.2.3-b1"))
|
||||||
}
|
}
|
||||||
|
@ -52,12 +53,19 @@ class AppUpdateCheckerTest {
|
||||||
fun `Beta should get Prod build`() {
|
fun `Beta should get Prod build`() {
|
||||||
assertTrue(isNewVersion("1.2.4", "1.2.3-b2"))
|
assertTrue(isNewVersion("1.2.4", "1.2.3-b2"))
|
||||||
assertTrue(isNewVersion("1.2.3", "1.2.3-b2"))
|
assertTrue(isNewVersion("1.2.3", "1.2.3-b2"))
|
||||||
|
assertFalse(isNewVersion("1.2.2", "1.2.3-b2"))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `Prod should get latest Prod build`() {
|
fun `Prod should get latest Prod build`() {
|
||||||
|
assertFalse(isNewVersion("1.2.1", "1.2.2"))
|
||||||
|
assertFalse(isNewVersion("1.2.2.1", "1.2.3"))
|
||||||
|
assertFalse(isNewVersion("1.2.3", "1.2.3.1"))
|
||||||
|
assertFalse(isNewVersion("1.2.3.1", "1.2.3.2"))
|
||||||
|
|
||||||
assertTrue(isNewVersion("1.2.4", "1.2.3"))
|
assertTrue(isNewVersion("1.2.4", "1.2.3"))
|
||||||
assertTrue(isNewVersion("1.2.4.1", "1.2.4"))
|
assertTrue(isNewVersion("1.2.4.1", "1.2.4"))
|
||||||
|
assertTrue(isNewVersion("1.2.4.2", "1.2.4.1"))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -73,6 +81,7 @@ class AppUpdateCheckerTest {
|
||||||
@Test
|
@Test
|
||||||
fun `Latest version check`() {
|
fun `Latest version check`() {
|
||||||
assertFalse(isNewVersion("1.2.3", "1.2.3"))
|
assertFalse(isNewVersion("1.2.3", "1.2.3"))
|
||||||
|
assertFalse(isNewVersion("1.2.3.1", "1.2.3.1"))
|
||||||
assertFalse(isNewVersion("1.2.3-r1", "1.2.3-r1"))
|
assertFalse(isNewVersion("1.2.3-r1", "1.2.3-r1"))
|
||||||
|
|
||||||
assertFalse(isNewVersion("1.2.3-r1", "1.2.3-r1"))
|
assertFalse(isNewVersion("1.2.3-r1", "1.2.3-r1"))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue