From: Brian Warner <warner@lothar.com>
Date: Thu, 4 Jan 2007 08:26:43 +0000 (-0700)
Subject: improve figleaf: fix some line-numbering bugs, add an alphabetically-sorted index... 
X-Git-Tag: tahoe_v0.1.0-0-UNSTABLE~407
X-Git-Url: https://git.rkrishnan.org/components/%22news.html/frontends/nxhtml.html?a=commitdiff_plain;h=7b2268ab3941507fda90eaedc93f6616d39efc22;p=tahoe-lafs%2Ftahoe-lafs.git

improve figleaf: fix some line-numbering bugs, add an alphabetically-sorted index HTML page
---

diff --git a/src/allmydata/util/figleaf.py b/src/allmydata/util/figleaf.py
index 44ff5812..5a3b1fb3 100644
--- a/src/allmydata/util/figleaf.py
+++ b/src/allmydata/util/figleaf.py
@@ -91,7 +91,7 @@ class LineGrabber:
         """
         self.lines = set()
 
-        self.ast = parser.suite(fp.read().strip())
+        self.ast = parser.suite(fp.read())
         self.tree = parser.ast2tuple(self.ast, True)
 
         self.find_terminal_nodes(self.tree)
diff --git a/src/allmydata/util/figleaf_htmlizer.py b/src/allmydata/util/figleaf_htmlizer.py
index 0aac077e..919fbbe9 100644
--- a/src/allmydata/util/figleaf_htmlizer.py
+++ b/src/allmydata/util/figleaf_htmlizer.py
@@ -145,18 +145,53 @@ def report_as_html(coverage, directory, exclude_patterns=[], root=None):
 	pcnt_75 = [ x for x in pcnts if x >= 75 ]
 	pcnt_50 = [ x for x in pcnts if x >= 50 ]
 
+        ## index.html
 	index_fp = open('%s/index.html' % (directory,), 'w')
+        # summary info
 	index_fp.write('<title>figleaf code coverage report</title>\n')
-	index_fp.write('<h2>Summary</h2> %d files total: %d files &gt; 90%%, %d files &gt; 75%%, %d files &gt; 50%%<p>' % (len(pcnts), len(pcnt_90), len(pcnt_75), len(pcnt_50)))
-	index_fp.write('<table border=1><tr><th>Filename</th><th># lines</th><th># covered</th><th>% covered</th></tr>\n')
-	index_fp.write('<tr><td><b>totals:</b></td><td><b>%d</b></td><td><b>%d</b></td><td><b>%.1f%%</b></td></tr><tr></tr>\n' % (summary_lines, summary_cover, summary_pcnt,))
+	index_fp.write('<h2>Summary</h2> %d files total: %d files &gt; '
+                       '90%%, %d files &gt; 75%%, %d files &gt; 50%%<p>'
+                       % (len(pcnts), len(pcnt_90),
+                          len(pcnt_75), len(pcnt_50)))
+        # sorted by percentage covered
+        index_fp.write('<h3>Sorted by Coverage Percentage</h3>\n')
+	index_fp.write('<table border=1><tr><th>Filename</th>'
+                       '<th># lines</th><th># covered</th>'
+                       '<th>% covered</th></tr>\n')
+	index_fp.write('<tr><td><b>totals:</b></td><td><b>%d</b></td>'
+                       '<td><b>%d</b></td><td><b>%.1f%%</b></td></tr>'
+                       '<tr></tr>\n'
+                       % (summary_lines, summary_cover, summary_pcnt,))
+
+	for filename, stuff in info_dict_items:
+                (n_lines, n_covered, percent_covered, display_filename) = stuff
+		html_outfile = make_html_filename(display_filename)
+
+		index_fp.write('<tr><td><a href="./%s">%s</a></td>'
+                               '<td>%d</td><td>%d</td><td>%.1f</td></tr>\n'
+                               % (html_outfile, display_filename, n_lines,
+                                  n_covered, percent_covered,))
+
+	index_fp.write('</table>\n')
+
+        # sorted by module name
+        index_fp.write('<h3>Sorted by Module Name (alphabetical)</h3>\n')
+        info_dict_items.sort()
+	index_fp.write('<table border=1><tr><th>Filename</th>'
+                       '<th># lines</th><th># covered</th>'
+                       '<th>% covered</th></tr>\n')
 
-	for filename, (n_lines, n_covered, percent_covered, display_filename) in info_dict_items:
+	for filename, stuff in info_dict_items:
+                (n_lines, n_covered, percent_covered, display_filename) = stuff
 		html_outfile = make_html_filename(display_filename)
 
-		index_fp.write('<tr><td><a href="./%s">%s</a></td><td>%d</td><td>%d</td><td>%.1f</td></tr>\n' % (html_outfile, display_filename, n_lines, n_covered, percent_covered,))
+		index_fp.write('<tr><td><a href="./%s">%s</a></td>'
+                               '<td>%d</td><td>%d</td><td>%.1f</td></tr>\n'
+                               % (html_outfile, display_filename, n_lines,
+                                  n_covered, percent_covered,))
 
 	index_fp.write('</table>\n')
+
 	index_fp.close()
 
 	logger.info('reported on %d file(s) total\n' % len(info_dict))