On 05/17/2013 09:32 AM, Dylan Baker wrote:
Previously every page (fixes, regressions, etc) was generated regardless
of whether there was anything on that page. That is simply silly, this
patch does a quick check and only generates pages that actually have
content, and add those pages to the link bar at the top of the page.

Signed-off-by: Dylan Baker <[email protected]>

I'm not sure I like this.  One of my common working modes is:

1. Generate a summary with a few columns (say, xfb-1, xfb-2)
2. Open changes.html or regressions.html in my browser.
3. Notice that I had regressions.
4. Fix stuff, do a new run (say xfb-3)
5. Regenerate the summary with xfb-1 and xfb-3 only
6. Hit reload in my browser
7. Notice that there are no changes/regressions.

With this change, reloading will simply give me 404 error. At that point, I don't know if (a) I had no regressions (good), or (b) html generation broke for some reason (i.e. bad JSON) and I didn't get any data.

Plus, then the only way to know that I have no changes/regressions is to load the index page (which has a TON of data and takes forever to load) and notice the links are missing.

So...yes, it does seem silly, but...it's kind of nice nonetheless.

---
  framework/summary.py | 92 ++++++++++++++++++++++++++++++++++------------------
  templates/index.mako |  4 +--
  2 files changed, 63 insertions(+), 33 deletions(-)

diff --git a/framework/summary.py b/framework/summary.py
index 722912c..6780458 100644
--- a/framework/summary.py
+++ b/framework/summary.py
@@ -668,54 +668,84 @@ class NewSummary:
                           output_encoding  = "utf-8",
                           module_directory = ".makotmp")

+        # Figure out which pages need to be built, then only build those pages
+        # and only add those pages to the link bar at the top
+        links = ['index', 'changes', 'problems', 'skipped', 'fixes',
+                 'regressions']
+
+        if not self.changes:
+            links.remove('changes')
+        if not self.problems:
+            links.remove('problems')
+        if not self.skipped:
+            links.remove('skipped')
+        if not self.fixes:
+            links.remove('fixes')
+        if not self.regressions:
+            links.remove('regressions')
+
          # Index.html
          file = open(path.join(destination, "index.html"), 'w')
          file.write(index.render(results = BuildHTMLIndex(self, self.alltests),
                                  page    = 'all',
                                  colnum  = len(self.results),
+                                links   = links,
                                  exclude = exclude))
          file.close()

          # changes.html
-        file = open(path.join(destination, "changes.html"), 'w')
-        file.write(index.render(results = BuildHTMLIndex(self, self.changes),
-                                page    = 'changes',
-                                colnum  = len(self.results),
-                                exclude = exclude))
-        file.close()
+        if self.changes:
+            file = open(path.join(destination, "changes.html"), 'w')
+            file.write(index.render(results = BuildHTMLIndex(self,
+                                                             self.changes),
+                                    page    = 'changes',
+                                    colnum  = len(self.results),
+                                    links   = links,
+                                    exclude = exclude))
+            file.close()

          # problems.html
-        file = open(path.join(destination, "problems.html"), 'w')
-        file.write(index.render(results = BuildHTMLIndex(self, self.problems),
-                                page    = 'problems',
-                                colnum  = len(self.results),
-                                exclude = exclude))
-        file.close()
+        if self.problems:
+            file = open(path.join(destination, "problems.html"), 'w')
+            file.write(index.render(results = BuildHTMLIndex(self,
+                                                             self.problems),
+                                    page    = 'problems',
+                                    colnum  = len(self.results),
+                                    links   = links,
+                                    exclude = exclude))
+            file.close()

          # skipped.html
-        file = open(path.join(destination, "skipped.html"), 'w')
-        file.write(index.render(results = BuildHTMLIndex(self, self.skipped),
-                                page    = 'skipped',
-                                colnum  = len(self.results),
-                                exclude = exclude))
-        file.close()
+        if self.skipped:
+            file = open(path.join(destination, "skipped.html"), 'w')
+            file.write(index.render(results = BuildHTMLIndex(self,
+                                                             self.skipped),
+                                    page    = 'skipped',
+                                    colnum  = len(self.results),
+                                    links   = links,
+                                    exclude = exclude))
+            file.close()

          # fixes.html
-        file = open(path.join(destination, "fixes.html"), 'w')
-        file.write(index.render(results = BuildHTMLIndex(self, self.fixes),
-                                page    = 'fixes',
-                                colnum  = len(self.results),
-                                exclude = exclude))
-        file.close()
+        if self.fixes:
+            file = open(path.join(destination, "fixes.html"), 'w')
+            file.write(index.render(results = BuildHTMLIndex(self, self.fixes),
+                                    page    = 'fixes',
+                                    colnum  = len(self.results),
+                                    links   = links,
+                                    exclude = exclude))
+            file.close()

          # regressions.html
-        file = open(path.join(destination, "regressions.html"), 'w')
-        file.write(index.render(results = BuildHTMLIndex(self,
-                                                         self.regressions),
-                                page    = 'regressions',
-                                colnum  = len(self.results),
-                                exclude = exclude))
-        file.close()
+        if self.regressions:
+            file = open(path.join(destination, "regressions.html"), 'w')
+            file.write(index.render(results = BuildHTMLIndex(self,
+                                                             self.regressions),
+                                    page    = 'regressions',
+                                    colnum  = len(self.results),
+                                    links   = links,
+                                    exclude = exclude))
+            file.close()

      def _buildDictionary(self, summary):
          # Build a dictionary from test name to pass count/total count, i.e.
diff --git a/templates/index.mako b/templates/index.mako
index e29ebcc..fd999ad 100644
--- a/templates/index.mako
+++ b/templates/index.mako
@@ -11,7 +11,7 @@
                <h1>Result summary</h1>
                <p>Currently showing: all</p>
                <p>Show:
-                       % for i in ['index', 'changes', 'fixes', 'problems', 
'regressions', 'skipped']:
+                       % for i in links:
                                % if i == page:
            ${page}
          % elif i == 'index':
@@ -23,7 +23,7 @@
                                % else:
                                        <a href="${i}.html">${i}</a>
                                % endif
-                               % if i != "skipped":
+                               % if i != links[-1]:
                                        |
                                % endif
                        % endfor


_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to