This will allow some tests to be added for cache cleaning. Signed-off-by: Dan McGee <dan@archlinux.org> --- test/pacman/pmrule.py | 7 +++++++ test/pacman/pmtest.py | 19 ++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletions(-) diff --git a/test/pacman/pmrule.py b/test/pacman/pmrule.py index 6263045..c68d085 100755 --- a/test/pacman/pmrule.py +++ b/test/pacman/pmrule.py @@ -146,6 +146,13 @@ def check(self, test): else: print "FILE rule '%s' not found" % case success = -1 + elif kind == "CACHE": + cachedir = os.path.join(test.root, util.PM_CACHEDIR) + if case == "EXISTS": + pkg = test.findpkg(key, value, allow_local=True) + if not pkg or not os.path.isfile( + os.path.join(cachedir, pkg.filename())): + success = 0 else: print "Rule kind '%s' not found" % kind success = -1 diff --git a/test/pacman/pmtest.py b/test/pacman/pmtest.py index 958e263..82dfda6 100755 --- a/test/pacman/pmtest.py +++ b/test/pacman/pmtest.py @@ -55,6 +55,22 @@ def addpkg(self, pkg): """ self.localpkgs.append(pkg) + def findpkg(self, name, version, allow_local=False): + """Find a package object matching the name and version specified in + either sync databases or the local package collection. The local database + is allowed to match if allow_local is True.""" + for db in self.db.itervalues(): + if db.treename == "local" and not allow_local: + continue + pkg = db.getpkg(name) + if pkg and pkg.version == version: + return pkg + for pkg in self.localpkgs: + if pkg.name == name and pkg.version == version: + return pkg + + return None + def addrule(self, rulename): """ """ @@ -76,6 +92,7 @@ def load(self): "local": pmdb.pmdb("local", self.root) } self.localpkgs = [] + self.createlocalpkgs = False self.filesystem = [] self.description = "" @@ -131,7 +148,7 @@ def generate(self): vprint("\t%s" % os.path.join(util.TMPDIR, pkg.filename())) pkg.makepkg(tmpdir) for key, value in self.db.iteritems(): - if key == "local": + if key == "local" and not self.createlocalpkgs: continue for pkg in value.pkgs: vprint("\t%s" % os.path.join(util.PM_CACHEDIR, pkg.filename())) -- 1.7.3.5