diff options
author | Marek Olšák <maraeo@gmail.com> | 2011-04-04 22:59:21 +0200 |
---|---|---|
committer | Marek Olšák <maraeo@gmail.com> | 2011-04-06 01:41:17 +0200 |
commit | 86a819d052802853b41230887120734a62280c83 (patch) | |
tree | 337cbd0d2c9135faa5dee2629459edfb92634a18 /framework | |
parent | 2e4c7a2fa9a859f3a912260816815b6ee845536c (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.py | 21 |
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): """\ |