[Piglit] [PATCH 01/16] summary.py: replace multiple attributes with a single dict attribute

Dylan Baker baker.dylan.c at gmail.com
Thu Jun 13 08:36:08 PDT 2013


Replaces self.alltests, self.changes, self.problems, self.regressions,
self.fixes, and self.skipped with self.test, a dictionary containing all
of the same information. This cleans the namespace for the NewSummary
object, as well as allowing for some other code simplification

Signed-off-by: Dylan Baker <baker.dylan.c at gmail.com>
---
 framework/summary.py | 35 +++++++++++++++--------------------
 1 file changed, 15 insertions(+), 20 deletions(-)

diff --git a/framework/summary.py b/framework/summary.py
index b5ddd95..bd0f4cd 100644
--- a/framework/summary.py
+++ b/framework/summary.py
@@ -360,7 +360,7 @@ class HTMLIndex(list):
         self._endRow()
 
         # Add the groups and tests to the out list
-        for key in sorted(getattr(summary, page)):
+        for key in sorted(page):
 
             # Split the group names and test names, then determine
             # which groups to close and which to open
@@ -628,12 +628,8 @@ class NewSummary:
 
         self.status = {}
         self.fractions = {}
-        self.alltests = []
-        self.changes = []
-        self.problems = []
-        self.skipped = []
-        self.regressions = []
-        self.fixes = []
+        self.tests = {'all': [], 'changes': [], 'problems': [], 'skipped': [],
+                      'regressions': [], 'fixes': []}
 
         for each in self.results:
             # Build a dict of the status output of all of the tests, with the
@@ -644,12 +640,11 @@ class NewSummary:
             self.status.update({each.name: status})
 
             # Create a list with all the test names in it
-            self.alltests = list(set(self.alltests) | set(each.tests))
+            self.tests['all'] = list(set(self.tests['all']) | set(each.tests))
 
-        # Create lists similar to self.alltests, but for the other root pages,
-        # (regressions, skips, ect). Special is used to makr things that cannot
-        # be comapred (like 'not run')
-        for test in self.alltests:
+        # Create lists similar to self.tests['all'], but for the other root
+        # pages, (regressions, skips, ect)
+        for test in self.tests['all']:
             status = []
             for each in self.results:
                 try:
@@ -657,23 +652,23 @@ class NewSummary:
                 except KeyError:
                     status.append(status_to_number("special"))
 
-            # Check and append self.changes
+            # Check and append self.tests['changes']
             # A set cannot contain duplicate entries, so creating a set out
             # the list will reduce it's length to 1 if all entries are the
             # same, meaning it is not a change
             if len(set(status)) > 1:
-                self.changes.append(test)
+                self.tests['changes'].append(test)
 
             # Problems
             # If the result contains a value other than 1 (pass) or 4 (skip)
             # it is a problem. Skips are not problems becasuse they have
             # Their own page.
             if [i for e in [2, 3, 5] for i in status if e is i]:
-                self.problems.append(test)
+                self.tests['problems'].append(test)
 
             # skipped
             if 4 in status:
-                self.skipped.append(test)
+                self.tests['skipped'].append(test)
 
             # fixes and regressions
             # check each member against the next member. If the second member
@@ -683,9 +678,9 @@ class NewSummary:
             # a value of 1
             for i in xrange(len(status) - 1):
                 if status[i] < status[i + 1] and status[i] != 0:
-                    self.regressions.append(test)
+                    self.tests['regressions'].append(test)
                 if status[i] > 1 and status[i + 1] == 1:
-                    self.fixes.append(test)
+                    self.tests['fixes'].append(test)
 
     def generateHTML(self, destination, exclude):
         """
@@ -768,7 +763,7 @@ class NewSummary:
         # alltests, where the other pages all use the same name. ie,
         # changes.html, self.changes, and page=changes.
         file = open(path.join(destination, "index.html"), 'w')
-        file.write(index.render(results=HTMLIndex(self, 'alltests'),
+        file.write(index.render(results=HTMLIndex(self, self.tests['all']),
                                 page='all',
                                 colnum=len(self.results),
                                 exclude=exclude))
@@ -777,7 +772,7 @@ class NewSummary:
         # Generate the rest of the pages
         for page in pages:
             file = open(path.join(destination, page + '.html'), 'w')
-            file.write(index.render(results=HTMLIndex(self, page),
+            file.write(index.render(results=HTMLIndex(self, self.tests[page]),
                                     page=page,
                                     colnum=len(self.results),
                                     exclude=exclude))
-- 
1.8.1.4



More information about the Piglit mailing list