changeset 156:27e78096a3fe

gnupg2 recipe: format the PKITS log as a HTML table
author Bernhard Herzog <bh@intevation.de>
date Wed, 11 Jun 2008 09:48:57 +0000
parents 236e91be522c
children 13de20d2db9f
files recipes/gnupg/gnupg2.py recipes/gnupg/pkits.html
diffstat 2 files changed, 51 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/recipes/gnupg/gnupg2.py	Tue Jun 10 15:37:22 2008 +0000
+++ b/recipes/gnupg/gnupg2.py	Wed Jun 11 09:48:57 2008 +0000
@@ -12,8 +12,11 @@
 import logging
 import re
 
+from genshi.template import TemplateLoader
+
 import treepkg.packager
 import treepkg.util
+import treepkg.report
 
 import base
 base.define_gnupg_packager("gnupg2")
@@ -62,9 +65,16 @@
             logging.info("Could not find PKITS LOG in %s", self.logfile)
             return
         treepkg.util.ensure_directory(os.path.dirname(self.pkits_log))
-        outfile = open(self.pkits_log, "w")
-        outfile.writelines(testlog)
-        outfile.close()
+        treepkg.util.writefile(self.pkits_log,
+                               self.htmlize_pkits_log(testlog))
+
+    def htmlize_pkits_log(self, raw_lines):
+        loader = TemplateLoader([os.path.dirname(__file__)])
+        template = loader.load("pkits.html")
+        pkits = treepkg.report.struct(revision=self.parent.revision,
+                                      lines=raw_lines)
+        stream = template.generate(pkits=pkits)
+        return stream.render('html')
 
 
 class RevisionPackager(treepkg.packager.RevisionPackager):
@@ -72,7 +82,7 @@
     source_packager_cls = SourcePackager
     binary_packager_cls = BinaryPackager
 
-    pkits_log = treepkg.packager._filenameproperty("pkits_log.txt",
+    pkits_log = treepkg.packager._filenameproperty("pkits_log.html",
                                                    dir_attr="log_dir")
 
     def list_log_files(self):
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/recipes/gnupg/pkits.html	Wed Jun 11 09:48:57 2008 +0000
@@ -0,0 +1,37 @@
+<html xmlns:py="http://genshi.edgewall.org/">
+  <head>
+    <title>PKITS Log for GnuPG2 rev. ${pkits.revision}</title>
+    <style type="text/css">
+      .statustable { background:#F4F4F4; }
+      .statustablehead { background:#E0E0E0; }
+      .statusheading { font-weight:bold; }
+      .PASS { background:#C0FFC0; }
+      .SKIP { background:#FFFFC0; }
+      .FAIL { background:#FFC0C0; }
+      .UNRESOLVED { background:#D0D0D0 }
+      .unknown { background:#FFFFFF }
+      tr { background:#FFFFFF; }
+      td { padding:5px; }
+    </style>
+  </head>
+  <body>
+    <H1>PKITS Log for GnuPG2 rev. ${pkits.revision}</H1>
+    <table class="statustable">
+      <tr>
+	<th class="statustablehead">Test ID</th>
+	<th class="statustablehead">Status</th>
+	<th class="statustablehead">Details</th>
+      </tr>
+      <py:for each="line in pkits.lines">
+	<py:with vars="testid, status, details = line.split(None, 2)">
+	  <tr class="${status in ['PASS', 'SKIP', 'FAIL', 'UNRESOLVED']
+                       and status or 'unknown'}">
+	    <td>${testid}</td>
+	    <td>${status}</td>
+	    <td>${details}</td>
+	  </tr>
+	</py:with>
+      </py:for>
+    </table>
+  </body>
+</html>
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)