[pacman-dev] [PATCH 1/4] pactest: allow checking for cache file existence
Dan McGee
dan at archlinux.org
Sat Jan 29 13:11:42 EST 2011
This will allow some tests to be added for cache cleaning.
Signed-off-by: Dan McGee <dan at 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
More information about the pacman-dev
mailing list