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