if not os.path.exists(os.path.join(testsRoot, "tester.py")): raise "Can't find tests root directory!"
os.environ['OMK_TESTSROOT'] = testsRoot
-sys.path.append(os.path.join(testsRoot, ".."))
-import rulesdef
+class Rules(dict):
+ "List of all rules and their snippets"
+ def __init__(self):
+ for r in os.listdir("../rules"):
+ snippets = {}
+ fn = os.path.join("..", "rules", r, "Makefile.rules")
+ f = open(fn)
+ for line in f:
+ m = re.search("#OMK:(.*)\.omk", line);
+ if m:
+ snippets[m.group(1)] = 1;
+ self[r] = snippets.keys()
+ print self
+
+rules = Rules()
class Results(dict):
def __init__(self):
return s
def toHtmlByRules(self):
- rules = sorted(rulesdef.rules.keys())
+ rk = sorted(rules.keys())
tests = sorted(self.keys())
s=''
- for r in rules:
+ for r in rk:
s+="""
<a name='results-%(rules)s' />
<h3>Rules: %(rules)s</h3>
class Stats(dict):
def __init__(self, results):
- rules = rulesdef.rules.keys()
- for rule in rules:
+ rk = rules.keys()
+ for rule in rk:
rulesStat = RulesStat(rule)
self[rule]=rulesStat
for resultEntry in results.values():
try:
f = open(os.path.join(self.directory, self.executable+'.rules'))
except IOError:
- self.rules = rulesdef.rules.keys()
+ self.rules = rules.keys()
return
line = f.readline()
colonMatch = re.search('([^:]*) *: *(.*)', line)
if colonMatch:
if colonMatch.group(1) == "all":
# all:
- self.rules = rulesdef.rules.keys()
+ self.rules = rules.keys()
elif colonMatch.group(1) == "snip":
# snip: ...
snip = colonMatch.group(2)
- for r in rulesdef.rules:
- if snip in rulesdef.rules[r]:
+ for r in rules:
+ if snip in rules[r]:
self.rules.append(r)
elif colonMatch.group(1) == "python":
# python: ...
expr = colonMatch.group(2)
- for r in rulesdef.rules:
- if eval(expr, {'rules': r, 'snippets': rulesdef.rules[r]}):
+ for r in rules:
+ if eval(expr, {'rules': r, 'snippets': rules[r]}):
self.rules.append(r)
else:
# rule name
line = line.strip()
- if line in rulesdef.rules: self.rules = [ line ]
+ if line in rules: self.rules = [ line ]
#print self.rules
def run(self):
self.results = TestCaseResult(self)
- print "Testing %s:\n" % self.name,
+ print "Testing \"%s\" in %s:\n" % (self.name, self.executable),
os.chdir(os.path.join(testsRoot, self.directory))
# Chose how to run the test - currently there is only one option
# if os.path.exists("Makefile.test"):
def _doRun(self, log):
"Runs the teset in current directory."
- print " ",os.environ['OMK_RULES'],
- sys.stdout.flush()
+# print " ",os.environ['OMK_RULES'],
+# sys.stdout.flush()
ret = self._exec(log)
- if log.canttest: retstr = "--"
- elif ret == 0: retstr = "OK"
+# if log.canttest: retstr = "--"
+# elif ret == 0: retstr = "ok"
+# else:
+# retstr = "FAILED"
+# self.failed = True
+# print "%*s%s" % (20-len(os.environ['OMK_RULES']), "", retstr)
+ if log.canttest: retstr = "[not tested] ok"
+ elif ret == 0: retstr = "ok"
else:
retstr = "FAILED"
self.failed = True
- print "%*s%s" % (20-len(os.environ['OMK_RULES']), "", retstr)
+ print "! %s (%s) %s" % (self.name, os.environ['OMK_RULES'], retstr)
+ sys.stdout.flush()
results = Results()