summaryrefslogtreecommitdiff
path: root/framework
diff options
context:
space:
mode:
authorMarek Olšák <maraeo@gmail.com>2011-04-04 22:59:21 +0200
committerMarek Olšák <maraeo@gmail.com>2011-04-06 01:41:17 +0200
commit86a819d052802853b41230887120734a62280c83 (patch)
tree337cbd0d2c9135faa5dee2629459edfb92634a18 /framework
parent2e4c7a2fa9a859f3a912260816815b6ee845536c (diff)
core: generate a summary of regressions
This is basically a subset of 'changes'. The regression is if a test result changes from either 'pass' or 'skip' to something other than 'pass' and 'skip'. Thus the relation is: { pass, skip } -> { warn, fail, trap, abort, crash } Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Diffstat (limited to 'framework')
-rw-r--r--framework/summary.py21
1 files changed, 18 insertions, 3 deletions
diff --git a/framework/summary.py b/framework/summary.py
index 89385096..133d6c54 100644
--- a/framework/summary.py
+++ b/framework/summary.py
@@ -52,6 +52,17 @@ class PassVector:
##### number of testruns
#############################################################################
class TestSummary:
+ def isRegression(self, statiList):
+ # Regression is:
+ # - if an item is neither 'pass' nor 'skip'
+ # - and if any item on the left side thereof is 'pass' or 'skip'
+ for i in range(1, len(statiList)):
+ if statiList[i-1] == 'pass' or statiList[i-1] == 'skip':
+ for j in range(i, len(statiList)):
+ if statiList[j] != 'pass' and statiList[j] != 'skip':
+ return True
+ return False
+
def __init__(self, summary, path, name, results):
"""\
summary is the root summary object
@@ -86,9 +97,11 @@ results is an array of TestResult instances, one per testrun
result.passvector = vectormap[result.status]
- stati = set([result.status for result in results])
- self.changes = len(stati) > 1
- self.problems = len(stati - set(['pass', 'skip'])) > 0
+ statiList = [result.status for result in results]
+ statiSet = set(statiList)
+ self.changes = len(statiSet) > 1
+ self.problems = len(statiSet - set(['pass', 'skip'])) > 0
+ self.regressions = self.isRegression(statiList)
def allTests(self):
return [self]
@@ -110,6 +123,7 @@ results is an array of GroupResult instances, one per testrun
self.results = results[:]
self.changes = False
self.problems = False
+ self.regressions = False
self.children = {}
# Perform some initial annotations
@@ -154,6 +168,7 @@ results is an array of GroupResult instances, one per testrun
self.changes = self.changes or self.children[name].changes
self.problems = self.problems or self.children[name].problems
+ self.regressions = self.regressions or self.children[name].regressions
def allTests(self):
"""\