mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-05-06 22:18:28 +00:00
Preparation for query matching: introduce Regexp + PatternMatch.
This commit is contained in:
@@ -224,6 +224,11 @@ func (p *Package) MatchesDependency(dep Dependency) bool {
|
|||||||
return r <= 0
|
return r <= 0
|
||||||
case VersionGreaterOrEqual:
|
case VersionGreaterOrEqual:
|
||||||
return r >= 0
|
return r >= 0
|
||||||
|
case VersionPatternMatch:
|
||||||
|
matched, err := filepath.Match(dep.Version, p.Version)
|
||||||
|
return err == nil && matched
|
||||||
|
case VersionRegexp:
|
||||||
|
panic("regexp matching not implemented yet")
|
||||||
}
|
}
|
||||||
|
|
||||||
panic("unknown relation")
|
panic("unknown relation")
|
||||||
|
|||||||
@@ -207,6 +207,17 @@ func (s *PackageSuite) TestMatchesDependency(c *C) {
|
|||||||
// <=
|
// <=
|
||||||
c.Check(p.MatchesDependency(Dependency{Pkg: "alien-arena-common", Architecture: "i386", Relation: VersionLessOrEqual, Version: "7.40-2"}), Equals, true)
|
c.Check(p.MatchesDependency(Dependency{Pkg: "alien-arena-common", Architecture: "i386", Relation: VersionLessOrEqual, Version: "7.40-2"}), Equals, true)
|
||||||
c.Check(p.MatchesDependency(Dependency{Pkg: "alien-arena-common", Architecture: "i386", Relation: VersionLessOrEqual, Version: "7.40-1"}), Equals, false)
|
c.Check(p.MatchesDependency(Dependency{Pkg: "alien-arena-common", Architecture: "i386", Relation: VersionLessOrEqual, Version: "7.40-1"}), Equals, false)
|
||||||
|
|
||||||
|
// %
|
||||||
|
c.Check(p.MatchesDependency(Dependency{Pkg: "alien-arena-common", Architecture: "i386", Relation: VersionPatternMatch, Version: "7.40-*"}), Equals, true)
|
||||||
|
c.Check(p.MatchesDependency(Dependency{Pkg: "alien-arena-common", Architecture: "i386", Relation: VersionPatternMatch, Version: "7.40-[2]"}), Equals, true)
|
||||||
|
c.Check(p.MatchesDependency(Dependency{Pkg: "alien-arena-common", Architecture: "i386", Relation: VersionPatternMatch, Version: "7.40-[2"}), Equals, false)
|
||||||
|
c.Check(p.MatchesDependency(Dependency{Pkg: "alien-arena-common", Architecture: "i386", Relation: VersionPatternMatch, Version: "7.40-[34]"}), Equals, false)
|
||||||
|
|
||||||
|
// %
|
||||||
|
c.Check(func() {
|
||||||
|
p.MatchesDependency(Dependency{Pkg: "alien-arena-common", Architecture: "i386", Relation: VersionRegexp, Version: "7\\.40-.*"})
|
||||||
|
}, Panics, "regexp matching not implemented yet")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *PackageSuite) TestGetDependencies(c *C) {
|
func (s *PackageSuite) TestGetDependencies(c *C) {
|
||||||
|
|||||||
@@ -178,6 +178,8 @@ const (
|
|||||||
VersionEqual
|
VersionEqual
|
||||||
VersionGreaterOrEqual
|
VersionGreaterOrEqual
|
||||||
VersionGreater
|
VersionGreater
|
||||||
|
VersionPatternMatch
|
||||||
|
VersionRegexp
|
||||||
)
|
)
|
||||||
|
|
||||||
// Dependency is a parsed version of Debian dependency to package
|
// Dependency is a parsed version of Debian dependency to package
|
||||||
@@ -207,6 +209,10 @@ func (d *Dependency) String() string {
|
|||||||
rel = ">="
|
rel = ">="
|
||||||
case VersionLessOrEqual:
|
case VersionLessOrEqual:
|
||||||
rel = "<="
|
rel = "<="
|
||||||
|
case VersionPatternMatch:
|
||||||
|
rel = "%"
|
||||||
|
case VersionRegexp:
|
||||||
|
rel = "~"
|
||||||
case VersionDontCare:
|
case VersionDontCare:
|
||||||
return fmt.Sprintf("%s [%s]", d.Pkg, d.Architecture)
|
return fmt.Sprintf("%s [%s]", d.Pkg, d.Architecture)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user