diff --git a/deb/query.go b/deb/query.go index a96af829..19a1cdc9 100644 --- a/deb/query.go +++ b/deb/query.go @@ -168,15 +168,15 @@ func (q *FieldQuery) Matches(pkg PackageLike) bool { case VersionDontCare: return field != "" case VersionEqual: - return field == q.Value + return CompareVersions(field, q.Value) == 0 case VersionGreater: - return field > q.Value + return CompareVersions(field, q.Value) > 0 case VersionGreaterOrEqual: - return field >= q.Value + return CompareVersions(field, q.Value) >= 0 case VersionLess: - return field < q.Value + return CompareVersions(field, q.Value) < 0 case VersionLessOrEqual: - return field <= q.Value + return CompareVersions(field, q.Value) <= 0 case VersionPatternMatch: matched, err := filepath.Match(q.Value, field) return err == nil && matched diff --git a/deb/query_test.go b/deb/query_test.go new file mode 100644 index 00000000..fccd0cf8 --- /dev/null +++ b/deb/query_test.go @@ -0,0 +1,23 @@ +package deb + +import ( + . "gopkg.in/check.v1" +) + +type QuerySuite struct { +} + +var _ = Suite(&QuerySuite{}) + +func (s *QuerySuite) TestVersionCompare(c *C) { + q := FieldQuery{"Version", VersionLess, "5.0.0.2", nil} + + p100 := Package{} + p100.Version = "5.0.0.100" + + p1 := Package{} + p1.Version = "5.0.0.1" + + c.Check(q.Matches(&p100), Equals, false) + c.Check(q.Matches(&p1), Equals, true) +} diff --git a/deb/version_test.go b/deb/version_test.go index 69c3083a..7dbcb145 100644 --- a/deb/version_test.go +++ b/deb/version_test.go @@ -98,6 +98,8 @@ func (s *VersionSuite) TestCompareVersions(c *C) { c.Check(CompareVersions("1.0-133-avc", "1.1"), Equals, -1) c.Check(CompareVersions("1.0-133-avc", "1.0"), Equals, 1) + + c.Check(CompareVersions("5.2.0.3", "5.2.0.283"), Equals, -1) } func (s *VersionSuite) TestParseDependency(c *C) {