[llvm-commits] [zorg] r77082 - /zorg/trunk/zorg/buildbot/commands/ClangTestCommand.py
Daniel Dunbar
daniel at zuster.org
Sat Jul 25 09:39:12 PDT 2009
Author: ddunbar
Date: Sat Jul 25 11:39:05 2009
New Revision: 77082
URL: http://llvm.org/viewvc/llvm-project?rev=77082&view=rev
Log:
Update ClangTestCommand for clang tester changes.
Modified:
zorg/trunk/zorg/buildbot/commands/ClangTestCommand.py
Modified: zorg/trunk/zorg/buildbot/commands/ClangTestCommand.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/commands/ClangTestCommand.py?rev=77082&r1=77081&r2=77082&view=diff
==============================================================================
--- zorg/trunk/zorg/buildbot/commands/ClangTestCommand.py (original)
+++ zorg/trunk/zorg/buildbot/commands/ClangTestCommand.py Sat Jul 25 11:39:05 2009
@@ -7,90 +7,39 @@
class ClangTestCommand(buildbot.steps.shell.Test):
description = "testing clang"
descriptionDone = "test clang"
- kFailRE = re.compile(r"[*]+ TEST '(.*)' FAILED! [*]+")
- kXFailRE = re.compile(r"XFAILED '(.*)': (.*)")
- kMakeLineRE = re.compile(r"make([[].*[]])?: .*")
+ kTestLineRE = re.compile(r'([^ ]*): (.*) \(.*.*\)')
def evaluateCommand(self, cmd):
rc = 0
- fails = []
- passes = []
- xfails = []
- xpasses = []
+ grouped = {}
failureLog = []
lines = self.getLog('stdio').readlines()
- # Trim lame startup message.
- if lines[0].startswith('--- Running'):
- lines = lines[1:]
-
it = iter(lines)
for ln in it:
ln = ln.strip()
if not ln:
continue
- # Strip make information.
- if ClangTestCommand.kMakeLineRE.match(ln):
- continue
-
- m = ClangTestCommand.kFailRE.match(ln)
+ m = ClangTestCommand.kTestLineRE.match(ln)
if m:
- # Found a failure, pull out the log.
- failLn = ln
- testName = m.group(1)
- fails.append(testName)
- self.readFailData(testName, it, failureLog)
- continue
-
- # Grumble. Current stuff never prints XFAILS except when they
- # pass. Lame.
- m = ClangTestCommand.kXFailRE.match(ln)
- if m:
- testName,xfailReason = m.groups()
-
- # Look for failure log.
- try:
- ln = it.next().strip()
- except StopIteration:
- ln = None
-
- if ln is not None:
- m = ClangTestCommand.kFailRE.match(ln)
- if m:
- # Read off failure log.
- self.readFailData(testName, it, failureLog)
- else:
- # Something else, push the line back.
- it = itertools.chain(iter([ln]), it)
-
- # FIXME: Make test output less sucky so we can count XFAILs.
- xpasses.append(testName)
- continue
-
- passes.append(ln)
- if fails:
- self.addCompleteLog("fails", "\n".join(fails) + "\n")
- if xfails:
- self.addCompleteLog("xfails", "\n".join(xfails) + "\n")
- if 0:
- self.addCompleteLog("passes", "\n".join(passes) + "\n")
- if failureLog:
- self.addCompleteLog("failure log", "".join(failureLog) + "\n")
- self.setTestResults(total=len(passes) + len(fails) + len(xfails) + len(xpasses),
- failed=len(fails) + len(xpasses),
- passed=len(passes) + len(xfails),
- warnings=len(xfails))
- if fails:
+ groupName = m.group(1)
+ testName = m.group(2)
+ if groupName not in grouped:
+ grouped[groupName] = []
+ grouped[groupName].append(testName)
+
+ # FIXME: Get logs for failures.
+ for name,items in grouped.items():
+ if name != 'PASS' and items:
+ self.addCompleteLog(name.lower(), '\n'.join(items) + '\n')
+ numPass = len(grouped.get('PASS',()))
+ numFail = len(grouped.get('FAIL',()))
+ numXFail = len(grouped.get('XFAIL',()))
+ numXPass = len(grouped.get('XPASS',()))
+ self.setTestResults(total=numPass + numFail + numXFail + numXPass,
+ failed=numFail + numXPass,
+ passed=numPass + numXFail,
+ warnings=numXFail)
+ if numFail + numXPass:
return buildbot.status.builder.FAILURE
return buildbot.status.builder.SUCCESS
-
- def readFailData(self, name, it, log):
- # Read off the failure log.
- log.append("FAIL: %s\n" % name)
- for ln in it:
- m = ClangTestCommand.kFailRE.match(ln)
- if m:
- break
- else:
- log.append(ln)
- log.append("\n")
More information about the llvm-commits
mailing list