summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtest/pacman/pmrule.py7
-rwxr-xr-xtest/pacman/pmtest.py19
2 files changed, 25 insertions, 1 deletions
diff --git a/test/pacman/pmrule.py b/test/pacman/pmrule.py
index 62630457..c68d085e 100755
--- a/test/pacman/pmrule.py
+++ b/test/pacman/pmrule.py
@@ -146,6 +146,13 @@ class pmrule(object):
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 958e2630..82dfda6d 100755
--- a/test/pacman/pmtest.py
+++ b/test/pacman/pmtest.py
@@ -55,6 +55,22 @@ class pmtest(object):
"""
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 @@ class pmtest(object):
"local": pmdb.pmdb("local", self.root)
}
self.localpkgs = []
+ self.createlocalpkgs = False
self.filesystem = []
self.description = ""
@@ -131,7 +148,7 @@ class pmtest(object):
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()))