diff --git a/shared-internal/src/main/kotlin/io/github/typesafegithub/workflows/shared/internal/model/Version.kt b/shared-internal/src/main/kotlin/io/github/typesafegithub/workflows/shared/internal/model/Version.kt index 4c7a9d1c81..d85002ef97 100644 --- a/shared-internal/src/main/kotlin/io/github/typesafegithub/workflows/shared/internal/model/Version.kt +++ b/shared-internal/src/main/kotlin/io/github/typesafegithub/workflows/shared/internal/model/Version.kt @@ -25,6 +25,9 @@ data class Version( return -1 } else if (otherIntPart == null) { return 1 + } else { + val comparison = intPart.compareTo(otherIntPart) + if (comparison != 0) return comparison } } if (versionParts.size < other.versionParts.size) return -1 diff --git a/shared-internal/src/test/kotlin/io/github/typesafegithub/workflows/shared/internal/model/VersionTest.kt b/shared-internal/src/test/kotlin/io/github/typesafegithub/workflows/shared/internal/model/VersionTest.kt index ab93740628..1392f58be7 100644 --- a/shared-internal/src/test/kotlin/io/github/typesafegithub/workflows/shared/internal/model/VersionTest.kt +++ b/shared-internal/src/test/kotlin/io/github/typesafegithub/workflows/shared/internal/model/VersionTest.kt @@ -52,6 +52,9 @@ class VersionTest : Triple("alpha", "beta", false), Triple("1.2.3", "1.2.3.4", false), Triple("3.2.1", "v3", true), + Triple("v1.2.1", "v2", false), + Triple("v1.2", "v2", false), + Triple("v1.2.1", "v1.3", false), ).forEach { (left, right, leftIsGreater) -> test("compareTo works correctly for $left vs. $right") { if (leftIsGreater) {