Skip to content

Commit 38d1cc0

Browse files
committed
feat: have Version#CompareStr return (int, error)
1 parent cc46349 commit 38d1cc0

File tree

13 files changed

+43
-29
lines changed

13 files changed

+43
-29
lines changed

pkg/database/osv.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,19 +100,25 @@ func (ar AffectsRange) containsVersion(pkg internal.PackageDetails) bool {
100100
return false
101101
}
102102

103-
return semantic.MustParse(a.version(), pkg.CompareAs).CompareStr(b.version()) < 0
103+
// Ignore errors as we assume the version is correct
104+
order, _ := semantic.MustParse(a.version(), pkg.CompareAs).CompareStr(b.version())
105+
106+
return order < 0
104107
})
105108

106109
var affected bool
107110
for _, e := range ar.Events {
108111
if affected {
109112
if e.Fixed != "" {
110-
affected = vp.CompareStr(e.Fixed) < 0
113+
order, _ := vp.CompareStr(e.Fixed)
114+
affected = order < 0
111115
} else if e.LastAffected != "" {
112-
affected = e.LastAffected == pkg.Version || vp.CompareStr(e.LastAffected) <= 0
116+
order, _ := vp.CompareStr(e.LastAffected)
117+
affected = e.LastAffected == pkg.Version || order <= 0
113118
}
114119
} else if e.Introduced != "" {
115-
affected = e.Introduced == "0" || vp.CompareStr(e.Introduced) >= 0
120+
order, _ := vp.CompareStr(e.Introduced)
121+
affected = e.Introduced == "0" || order >= 0
116122
}
117123
}
118124

pkg/semantic/compare_test.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,15 @@ func expectCompareResult(
116116

117117
v := parseAsVersion(t, a, ecosystem)
118118

119-
if actualResult := v.CompareStr(b); actualResult != expectedResult {
119+
actualResult, err := v.CompareStr(b)
120+
121+
if err != nil {
122+
t.Errorf("failed to compare '%s' to '%s': %v", a, b, err)
123+
124+
return false
125+
}
126+
127+
if actualResult != expectedResult {
120128
t.Errorf(
121129
"Expected %s to be %s %s, but it was %s",
122130
a,

pkg/semantic/version-alpine.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,8 @@ func (v AlpineVersion) Compare(w AlpineVersion) int {
209209
return 0
210210
}
211211

212-
func (v AlpineVersion) CompareStr(str string) int {
213-
return v.Compare(parseAlpineVersion(str))
212+
func (v AlpineVersion) CompareStr(str string) (int, error) {
213+
return v.Compare(parseAlpineVersion(str)), nil
214214
}
215215

216216
// parseAlpineNumberComponents parses the given string into AlpineVersion.components

pkg/semantic/version-cran.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ func (v CRANVersion) Compare(w CRANVersion) int {
3434
return -1
3535
}
3636

37-
func (v CRANVersion) CompareStr(str string) int {
38-
return v.Compare(parseCRANVersion(str))
37+
func (v CRANVersion) CompareStr(str string) (int, error) {
38+
return v.Compare(parseCRANVersion(str)), nil
3939
}
4040

4141
func parseCRANVersion(str string) CRANVersion {

pkg/semantic/version-debian.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,8 @@ func (v DebianVersion) Compare(w DebianVersion) int {
133133
return 0
134134
}
135135

136-
func (v DebianVersion) CompareStr(str string) int {
137-
return v.Compare(parseDebianVersion(str))
136+
func (v DebianVersion) CompareStr(str string) (int, error) {
137+
return v.Compare(parseDebianVersion(str)), nil
138138
}
139139

140140
func parseDebianVersion(str string) DebianVersion {

pkg/semantic/version-maven.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -313,8 +313,8 @@ func (mv MavenVersion) Compare(w MavenVersion) int {
313313
return +1
314314
}
315315

316-
func (mv MavenVersion) CompareStr(str string) int {
317-
return mv.Compare(parseMavenVersion(str))
316+
func (mv MavenVersion) CompareStr(str string) (int, error) {
317+
return mv.Compare(parseMavenVersion(str)), nil
318318
}
319319

320320
func parseMavenVersion(str string) MavenVersion {

pkg/semantic/version-nuget.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ func (v NuGetVersion) Compare(w NuGetVersion) int {
1414
return compareBuildComponents(strings.ToLower(v.Build), strings.ToLower(w.Build))
1515
}
1616

17-
func (v NuGetVersion) CompareStr(str string) int {
18-
return v.Compare(parseNuGetVersion(str))
17+
func (v NuGetVersion) CompareStr(str string) (int, error) {
18+
return v.Compare(parseNuGetVersion(str)), nil
1919
}
2020

2121
func parseNuGetVersion(str string) NuGetVersion {

pkg/semantic/version-packagist.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,6 @@ func (v PackagistVersion) Compare(w PackagistVersion) int {
120120
return comparePackagistComponents(v.Components, w.Components)
121121
}
122122

123-
func (v PackagistVersion) CompareStr(str string) int {
124-
return v.Compare(parsePackagistVersion(str))
123+
func (v PackagistVersion) CompareStr(str string) (int, error) {
124+
return v.Compare(parsePackagistVersion(str)), nil
125125
}

pkg/semantic/version-pypi.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,6 @@ func (pv PyPIVersion) Compare(pw PyPIVersion) int {
366366
return pypiCompareVersion(pv, pw)
367367
}
368368

369-
func (pv PyPIVersion) CompareStr(str string) int {
370-
return pv.Compare(parsePyPIVersion(str))
369+
func (pv PyPIVersion) CompareStr(str string) (int, error) {
370+
return pv.Compare(parsePyPIVersion(str)), nil
371371
}

pkg/semantic/version-redhat.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,20 +174,20 @@ func compareRedHatComponents(a, b string) int {
174174
return 0
175175
}
176176

177-
func (v RedHatVersion) CompareStr(str string) int {
177+
func (v RedHatVersion) CompareStr(str string) (int, error) {
178178
w := parseRedHatVersion(str)
179179

180180
if diff := compareRedHatComponents(v.epoch, w.epoch); diff != 0 {
181-
return diff
181+
return diff, nil
182182
}
183183
if diff := compareRedHatComponents(v.version, w.version); diff != 0 {
184-
return diff
184+
return diff, nil
185185
}
186186
if diff := compareRedHatComponents(v.release, w.release); diff != 0 {
187-
return diff
187+
return diff, nil
188188
}
189189

190-
return 0
190+
return 0, nil
191191
}
192192

193193
// parseRedHatVersion parses a Red Hat version into a RedHatVersion struct.

0 commit comments

Comments
 (0)