Skip to content

Commit 441ff8e

Browse files
committed
feat: nil version equality
This changes the Equal method to return true for 2 nil values and false if any one of the values is nil. Previously passing a nil value would have resulted in a panic.
1 parent 2f39fdc commit 441ff8e

File tree

2 files changed

+16
-17
lines changed

2 files changed

+16
-17
lines changed

version.go

+6
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,12 @@ func (v *Version) GreaterThan(o *Version) bool {
390390
// Note, versions can be equal with different metadata since metadata
391391
// is not considered part of the comparable version.
392392
func (v *Version) Equal(o *Version) bool {
393+
if v == o {
394+
return true
395+
}
396+
if v == nil || o == nil {
397+
return false
398+
}
393399
return v.Compare(o) == 0
394400
}
395401

version_test.go

+10-17
Original file line numberDiff line numberDiff line change
@@ -343,28 +343,21 @@ func TestGreaterThan(t *testing.T) {
343343

344344
func TestEqual(t *testing.T) {
345345
tests := []struct {
346-
v1 string
347-
v2 string
346+
v1 *Version
347+
v2 *Version
348348
expected bool
349349
}{
350-
{"1.2.3", "1.5.1", false},
351-
{"2.2.3", "1.5.1", false},
352-
{"3.2-beta", "3.2-beta", true},
353-
{"3.2-beta+foo", "3.2-beta+bar", true},
350+
{MustParse("1.2.3"), MustParse("1.5.1"), false},
351+
{MustParse("2.2.3"), MustParse("1.5.1"), false},
352+
{MustParse("3.2-beta"), MustParse("3.2-beta"), true},
353+
{MustParse("3.2-beta+foo"), MustParse("3.2-beta+bar"), true},
354+
{nil, nil, true},
355+
{nil, MustParse("1.2.3"), false},
356+
{MustParse("1.2.3"), nil, false},
354357
}
355358

356359
for _, tc := range tests {
357-
v1, err := NewVersion(tc.v1)
358-
if err != nil {
359-
t.Errorf("Error parsing version: %s", err)
360-
}
361-
362-
v2, err := NewVersion(tc.v2)
363-
if err != nil {
364-
t.Errorf("Error parsing version: %s", err)
365-
}
366-
367-
a := v1.Equal(v2)
360+
a := tc.v1.Equal(tc.v2)
368361
e := tc.expected
369362
if a != e {
370363
t.Errorf(

0 commit comments

Comments
 (0)