Bläddra i källkod

fix nil version comparisons, add equal func

Aneurin Barker Snook 10 månader sedan
förälder
incheckning
72e0de304e
2 ändrade filer med 14 tillägg och 3 borttagningar
  1. 12 1
      version.go
  2. 2 2
      version_test.go

+ 12 - 1
version.go

@@ -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
version_test.go

@@ -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},
 	}