Skip to content

Commit f999afa

Browse files
authored
Merge pull request #3478 from arixmkii/fix-version-parser
Fix version parsing in case of dirty checkout of a tag
2 parents d851c78 + e9ce759 commit f999afa

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

pkg/version/versionutil/versionutil.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@ import (
1111

1212
// Parse parses a Lima version string by removing the leading "v" character and
1313
// stripping everything from the first "-" forward (which are `git describe` artifacts and
14-
// not semver pre-release markers). So "v0.19.1-16-gf3dc6ed.m" will be parsed as "0.19.1".
14+
// not semver pre-release markers) or cutting ".m" suffix from exact version.
15+
// So "v0.19.1-16-gf3dc6ed.m" will be parsed as "0.19.1".
1516
func Parse(version string) (*semver.Version, error) {
1617
version = strings.TrimPrefix(version, "v")
1718
version, _, _ = strings.Cut(version, "-")
19+
version = strings.TrimSuffix(version, ".m")
1820
return semver.NewVersion(version)
1921
}
2022

pkg/version/versionutil/versionutil_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,17 @@ func TestGreaterEqual(t *testing.T) {
2727
assert.Equal(t, GreaterEqual("0.2.0", "0.1.0"), true)
2828
assert.Equal(t, GreaterEqual("abacab", "0.1.0"), true)
2929
}
30+
31+
func TestParse(t *testing.T) {
32+
v1, err1 := Parse("v0.19.1-16-gf3dc6ed.m")
33+
assert.NilError(t, err1)
34+
assert.Equal(t, v1.Major, int64(0))
35+
assert.Equal(t, v1.Minor, int64(19))
36+
assert.Equal(t, v1.Patch, int64(1))
37+
38+
v2, err2 := Parse("v0.19.1.m")
39+
assert.NilError(t, err2)
40+
assert.Equal(t, v2.Major, int64(0))
41+
assert.Equal(t, v2.Minor, int64(19))
42+
assert.Equal(t, v2.Patch, int64(1))
43+
}

0 commit comments

Comments
 (0)