summaryrefslogtreecommitdiffstats
path: root/test/pacman/pmrule.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/pacman/pmrule.py')
-rwxr-xr-xtest/pacman/pmrule.py62
1 files changed, 34 insertions, 28 deletions
diff --git a/test/pacman/pmrule.py b/test/pacman/pmrule.py
index e7c9c44f..c68d085e 100755
--- a/test/pacman/pmrule.py
+++ b/test/pacman/pmrule.py
@@ -16,10 +16,11 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
-from util import *
-from stat import *
+import stat
-class pmrule:
+import util
+
+class pmrule(object):
"""Rule object
"""
@@ -29,19 +30,20 @@ class pmrule:
self.result = 0
def __str__(self):
- return "rule = %s" % self.rule
+ if len(self.rule) <= 40:
+ return self.rule
+ return self.rule[:37] + '...'
- def check(self, root, retcode, localdb, files):
+ def check(self, test):
"""
"""
-
success = 1
- [test, args] = self.rule.split("=")
- if test[0] == "!":
+ [testname, args] = self.rule.split("=")
+ if testname[0] == "!":
self.false = 1
- test = test.lstrip("!")
- [kind, case] = test.split("_")
+ testname = testname.lstrip("!")
+ [kind, case] = testname.split("_")
if "|" in args:
[key, value] = args.split("|", 1)
else:
@@ -49,33 +51,32 @@ class pmrule:
if kind == "PACMAN":
if case == "RETCODE":
- if retcode != int(key):
+ if test.retcode != int(key):
success = 0
elif case == "OUTPUT":
- logfile = os.path.join(root, LOGFILE)
+ logfile = os.path.join(test.root, util.LOGFILE)
if not os.access(logfile, os.F_OK):
print "LOGFILE not found, cannot validate 'OUTPUT' rule"
success = 0
- elif not grep(os.path.join(root, LOGFILE), key):
+ elif not util.grep(logfile, key):
success = 0
else:
print "PACMAN rule '%s' not found" % case
success = -1
elif kind == "PKG":
+ localdb = test.db["local"]
newpkg = localdb.db_read(key)
if not newpkg:
success = 0
else:
- vprint("\tnewpkg.checksum : %s" % newpkg.checksum)
- vprint("\tnewpkg.mtime : %s" % newpkg.mtime)
if case == "EXIST":
success = 1
- elif case == "MODIFIED":
- if not localdb.ispkgmodified(newpkg):
- success = 0
elif case == "VERSION":
if value != newpkg.version:
success = 0
+ elif case == "DESC":
+ if value != newpkg.desc:
+ success = 0
elif case == "GROUPS":
if not value in newpkg.groups:
success = 0
@@ -106,21 +107,22 @@ class pmrule:
print "PKG rule '%s' not found" % case
success = -1
elif kind == "FILE":
- filename = os.path.join(root, key)
+ filename = os.path.join(test.root, key)
if case == "EXIST":
if not os.path.isfile(filename):
success = 0
elif case == "MODIFIED":
- for f in files:
+ for f in test.files:
if f.name == key:
if not f.ismodified():
success = 0
+ break
elif case == "MODE":
if not os.path.isfile(filename):
success = 0
else:
- mode = os.lstat(filename)[ST_MODE]
- if int(value,8) != S_IMODE(mode):
+ mode = os.lstat(filename)[stat.ST_MODE]
+ if int(value, 8) != stat.S_IMODE(mode):
success = 0
elif case == "TYPE":
if value == "dir":
@@ -133,17 +135,24 @@ class pmrule:
if not os.path.islink(filename):
success = 0
elif case == "PACNEW":
- if not os.path.isfile("%s%s" % (filename, PM_PACNEW)):
+ if not os.path.isfile("%s.pacnew" % filename):
success = 0
elif case == "PACORIG":
- if not os.path.isfile("%s%s" % (filename, PM_PACORIG)):
+ if not os.path.isfile("%s.pacorig" % filename):
success = 0
elif case == "PACSAVE":
- if not os.path.isfile("%s%s" % (filename, PM_PACSAVE)):
+ if not os.path.isfile("%s.pacsave" % filename):
success = 0
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
@@ -153,7 +162,4 @@ class pmrule:
self.result = success
return success
-
-if __name__ != "__main__":
- rule = pmrule("PKG_EXIST=dummy")
# vim: set ts=4 sw=4 et: