fix nil version comparisons, add equal func

This commit is contained in:
Aneurin Barker Snook
2024-07-15 08:54:56 +01:00
parent 8f3b8e5c46
commit 72e0de304e
2 changed files with 14 additions and 3 deletions
+12 -1
View File
@@ -19,7 +19,11 @@ type Version struct {
//
// Extensions such as pre-release version or build metadata are ignored when comparing versions.
func (a *Version) Compare(b *Version) int {
if a == nil || b == nil {
if a == nil && b != nil {
return -1
} else if a != nil && b == nil {
return 1
} else if a == nil && b == nil {
return 0
}
@@ -40,6 +44,13 @@ func (a *Version) Compare(b *Version) int {
return -1
}
// Equal checks for equality between two versions.
//
// Extensions such as pre-release version or build metadata are ignored when comparing versions.
func (a *Version) Equal(b *Version) bool {
return a.Compare(b) == 0
}
// Match tests the version against a constraint.
// Gt and Lt take precedence over Gte and Lte.
func (v *Version) Match(c *Constraint) bool {
+2 -2
View File
@@ -55,8 +55,8 @@ func TestVersion_Compare(t *testing.T) {
{A: MustParse("1.20.0"), B: MustParse("1.2.0"), Expected: 1},
{A: MustParse("1.20.0"), B: MustParse("1.2.20"), Expected: 1},
{A: MustParse("1.20.0"), B: MustParse("1.20.1"), Expected: -1},
{A: MustParse("1.0.0"), Expected: 0},
{B: MustParse("1.0.0"), Expected: 0},
{A: MustParse("1.0.0"), Expected: 1},
{B: MustParse("1.0.0"), Expected: -1},
{Expected: 0},
}