Skip to content

Commit 6049caa

Browse files
committed
Compare mata string if everything else is equal
1 parent 9a22f59 commit 6049caa

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

version/version.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,17 @@ func (v Version) Compare(o *Version) int {
101101
if v.Minor != o.Minor {
102102
return v.Minor - o.Minor
103103
}
104-
return v.Patch - o.Patch
104+
if v.Patch != o.Patch {
105+
return v.Patch - o.Patch
106+
}
107+
if v.Commits != o.Commits {
108+
return v.Commits - o.Commits
109+
}
110+
if v.Meta != o.Meta {
111+
return strings.Compare(v.Meta, o.Meta)
112+
}
113+
// alphabetic order
114+
return strings.Compare(v.String(), o.String())
105115
}
106116

107117
// BumpTo increases the version to the next patch/minor/major version. The version components with

version/version_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,4 +216,10 @@ func TestVersionCompare(t *testing.T) {
216216
assert.Equal(t, v.Compare(&Version{Major: 1, Minor: 3, Patch: 0}), -1)
217217
assert.Equal(t, v.Compare(&Version{Major: 1, Minor: 0, Patch: 0}), 2)
218218
assert.Equal(t, v.Compare(&Version{Major: 1, Minor: 2, Patch: 3}), 0)
219+
assert.Equal(t, v.Compare(&Version{Major: 1, Minor: 2, Patch: 3}), 0)
220+
221+
v = Version{Major: 1, Minor: 2, Patch: 3, Meta: "dev.2"}
222+
assert.Equal(t, v.Compare(&Version{Major: 1, Minor: 2, Patch: 3, Meta: "dev.1"}), 1)
223+
assert.Equal(t, v.Compare(&Version{Major: 1, Minor: 2, Patch: 3, Meta: "dev.5"}), -1)
224+
assert.Equal(t, v.Compare(&Version{Major: 1, Minor: 2, Patch: 3, Meta: "dev.2"}), 0)
219225
}

0 commit comments

Comments
 (0)