[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