Revive lcov reporting
[build-farm.git] / buildfarm / web / __init__.py
index 49aa6e5579bd47005600f98e29231703d2c19898..eae7ab04bed736b2d55c2d7f2c245d3192fa1d56 100755 (executable)
@@ -167,6 +167,8 @@ def subunit_to_buildfarm_result(subunit_result):
         return "failed"
     elif subunit_result == "xfail":
         return "xfailed"
+    elif subunit_result == "uxsuccess":
+        return "uxpassed"
     else:
         return "unknown"
 
@@ -239,7 +241,7 @@ class LogPrettyPrinter(object):
         log = re.sub("""
               ^test: ([\w\-=,_:\ /.&; \(\)]+).*?
               (.*?)
-              (success|xfail|failure|skip): [\w\-=,_:\ /.&; \(\)]+( \[.*?\])?.*?
+              (success|xfail|failure|skip|uxsuccess): [\w\-=,_:\ /.&; \(\)]+( \[.*?\])?.*?
            """, self._format_test, log)
 
         return "<pre>%s</pre>" % log
@@ -738,6 +740,7 @@ class ViewSummaryPage(BuildFarmPage):
             else:
                     yield "<td>"
             yield "%d</td>" % panic_count[tree]
+
             try:
                 lcov_status = self.buildfarm.lcov_status(tree)
             except NoSuchBuildError:
@@ -748,6 +751,17 @@ class ViewSummaryPage(BuildFarmPage):
                         self.buildfarm.LCOVHOST, tree, lcov_status)
                 else:
                     yield "<td></td>"
+
+            try:
+                unused_fns = self.buildfarm.unused_fns(tree)
+            except NoSuchBuildError:
+                yield "<td></td>"
+            else:
+                if unused_fns is not None:
+                    yield "<td><a href=\"/lcov/data/%s/%s/%s\">Unused Functions</a></td>" % (
+                        self.buildfarm.LCOVHOST, tree, unused_fns)
+                else:
+                    yield "<td></td>"
             yield "</tr>"
 
         yield "</tbody></table>"
@@ -820,7 +834,11 @@ class HistoryPage(BuildFarmPage):
 class DiffPage(HistoryPage):
 
     def render(self, myself, tree, revision):
-        t = self.buildfarm.trees[tree]
+        try:
+            t = self.buildfarm.trees[tree]
+        except KeyError:
+            yield "Unknown tree %s" % tree
+            return
         branch = t.get_branch()
         (entry, diff) = branch.diff(revision)
         # get information about the current diff
@@ -902,7 +920,7 @@ class BuildFarmApp(object):
         yield "    <meta name='description' contents='Home of the Samba Build Farm, the automated testing facility.'/>\n"
         yield "    <meta name='robots' contents='noindex'/>"
         yield "    <link rel='stylesheet' href='/build_farm.css' type='text/css' media='all'/>"
-        yield "    <link rel='stylesheet' href='http://master.samba.org/samba/style/common.css' type='text/css' media='all'/>"
+        yield "    <link rel='stylesheet' href='http://www.samba.org/samba/style/common.css' type='text/css' media='all'/>"
         yield "    <link rel='shortcut icon' href='http://www.samba.org/samba/images/favicon.ico'/>"
         yield "  </head>"
         yield "<body>"
@@ -983,14 +1001,20 @@ class BuildFarmApp(object):
         else:
             fn = wsgiref.util.shift_path_info(environ)
             if fn == "tree":
-                start_response('200 OK', [
-                    ('Content-type', 'text/html; charset=utf-8')])
                 tree = wsgiref.util.shift_path_info(environ)
                 subfn = wsgiref.util.shift_path_info(environ)
                 if subfn in ("", None, "+recent"):
+                    start_response('200 OK', [
+                        ('Content-type', 'text/html; charset=utf-8')])
                     page = ViewRecentBuildsPage(self.buildfarm)
                     yield "".join(self.html_page(form, page.render(myself, tree, get_param(form, 'sortby') or 'age')))
+                elif subfn == "+recent-ids":
+                    start_response('200 OK', [
+                        ('Content-type', 'text/plain; charset=utf-8')])
+                    yield "".join([x.log_checksum()+"\n" for x in self.buildfarm.get_tree_builds(tree) if x.has_log()])
                 else:
+                    start_response('200 OK', [
+                        ('Content-type', 'text/html; charset=utf-8')])
                     yield "Unknown subfn %s" % subfn
             elif fn == "host":
                 start_response('200 OK', [