pactest: pass entire test to rule.check()
We were piecemeal passing fields from the test object in and it was getting out of hand, and future work would have added yet another argument. Instead, just pass the entire test object and entrust the rule to get what it needs. Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
ef86da97f5
commit
ce089e1b97
|
@ -34,17 +34,16 @@ def __str__(self):
|
|||
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:
|
||||
|
@ -52,19 +51,20 @@ def check(self, root, retcode, localdb, files):
|
|||
|
||||
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, util.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 util.grep(os.path.join(root, util.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
|
||||
|
@ -107,12 +107,12 @@ def check(self, root, retcode, localdb, files):
|
|||
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
|
||||
|
|
|
@ -263,7 +263,7 @@ def check(self):
|
|||
print "==> Checking rules"
|
||||
|
||||
for i in self.rules:
|
||||
success = i.check(self.root, self.retcode, self.db["local"], self.files)
|
||||
success = i.check(self)
|
||||
if success == 1:
|
||||
msg = " OK "
|
||||
self.result["success"] += 1
|
||||
|
|
Loading…
Reference in New Issue