Skip to content

Commit 2da1f51

Browse files
parse tolerant
1 parent 955e08c commit 2da1f51

File tree

1 file changed

+7
-15
lines changed

1 file changed

+7
-15
lines changed

pkg/analyze/database_shared.go

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,26 +35,18 @@ func compareDatabaseConditionalToActual(conditional string, result *collect.Data
3535
return false, errors.New("unable to parse postgres connected analyzer")
3636

3737
case "version":
38-
//semver requires major.minor.patch format to successqfully compare versions.
39-
if compVer := strings.Split(parts[2], "."); len(compVer) == 2 {
40-
parts[2] = fmt.Sprintf("%s.%s.0", compVer[0], compVer[1])
41-
} else if len(compVer) == 1 {
42-
parts[2] = fmt.Sprintf("%s.0.0", compVer[0])
43-
}
44-
if compVer := strings.Split(result.Version, "."); len(compVer) == 2 {
45-
result.Version = fmt.Sprintf("%s.%s.0", compVer[0], compVer[1])
46-
} else if len(compVer) == 1 {
47-
result.Version = fmt.Sprintf("%s.0.0", compVer[0])
38+
expected, err := semver.ParseTolerant(strings.Replace(parts[2], "x", "0", -1))
39+
if err != nil {
40+
return false, errors.Wrap(err, "failed to parse expected version")
4841
}
49-
50-
expectedRange, err := semver.ParseRange(fmt.Sprintf("%s %s", parts[1], parts[2]))
42+
actual, err := semver.ParseTolerant(strings.Replace(result.Version, "x", "0", -1))
5143
if err != nil {
52-
return false, errors.Wrap(err, "failed to parse semver range")
44+
return false, errors.Wrap(err, "failed to parse postgres db actual version")
5345
}
5446

55-
actual, err := semver.Parse(result.Version)
47+
expectedRange, err := semver.ParseRange(fmt.Sprintf("%s %s", parts[1], expected.String()))
5648
if err != nil {
57-
return false, errors.Wrap(err, "failed to parse actual postgres version")
49+
return false, errors.Wrap(err, "failed to parse semver range")
5850
}
5951

6052
return expectedRange(actual), nil

0 commit comments

Comments
 (0)