index : pacman | |
Archlinux32 fork of pacman | gitolite user |
summaryrefslogtreecommitdiff |
-rwxr-xr-x | pactest/pmrule.py | 159 |
diff --git a/pactest/pmrule.py b/pactest/pmrule.py deleted file mode 100755 index e7c9c44f..00000000 --- a/pactest/pmrule.py +++ /dev/null @@ -1,159 +0,0 @@ -#! /usr/bin/python -# -# Copyright (c) 2006 by Aurelien Foret <orelien@chez.com> -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -import os -from util import * -from stat import * - -class pmrule: - """Rule object - """ - - def __init__(self, rule): - self.rule = rule - self.false = 0 - self.result = 0 - - def __str__(self): - return "rule = %s" % self.rule - - def check(self, root, retcode, localdb, files): - """ - """ - - success = 1 - - [test, args] = self.rule.split("=") - if test[0] == "!": - self.false = 1 - test = test.lstrip("!") - [kind, case] = test.split("_") - if "|" in args: - [key, value] = args.split("|", 1) - else: - [key, value] = [args, None] - - if kind == "PACMAN": - if case == "RETCODE": - if retcode != int(key): - success = 0 - elif case == "OUTPUT": - logfile = os.path.join(root, 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): - success = 0 - else: - print "PACMAN rule '%s' not found" % case - success = -1 - elif kind == "PKG": - 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 == "GROUPS": - if not value in newpkg.groups: - success = 0 - elif case == "PROVIDES": - if not value in newpkg.provides: - success = 0 - elif case == "DEPENDS": - if not value in newpkg.depends: - success = 0 - elif case == "OPTDEPENDS": - if not value in newpkg.optdepends: - success = 0 - elif case == "REASON": - if newpkg.reason != int(value): - success = 0 - elif case == "FILES": - if not value in newpkg.files: - success = 0 - elif case == "BACKUP": - found = 0 - for f in newpkg.backup: - name, md5sum = f.split("\t") - if value == name: - found = 1 - if not found: - success = 0 - else: - print "PKG rule '%s' not found" % case - success = -1 - elif kind == "FILE": - filename = os.path.join(root, key) - if case == "EXIST": - if not os.path.isfile(filename): - success = 0 - elif case == "MODIFIED": - for f in files: - if f.name == key: - if not f.ismodified(): - success = 0 - 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): - success = 0 - elif case == "TYPE": - if value == "dir": - if not os.path.isdir(filename): - success = 0 - elif value == "file": - if not os.path.isfile(filename): - success = 0 - elif value == "link": - if not os.path.islink(filename): - success = 0 - elif case == "PACNEW": - if not os.path.isfile("%s%s" % (filename, PM_PACNEW)): - success = 0 - elif case == "PACORIG": - if not os.path.isfile("%s%s" % (filename, PM_PACORIG)): - success = 0 - elif case == "PACSAVE": - if not os.path.isfile("%s%s" % (filename, PM_PACSAVE)): - success = 0 - else: - print "FILE rule '%s' not found" % case - success = -1 - else: - print "Rule kind '%s' not found" % kind - success = -1 - - if self.false and success != -1: - success = not success - self.result = success - return success - - -if __name__ != "__main__": - rule = pmrule("PKG_EXIST=dummy") -# vim: set ts=4 sw=4 et: |