From 7b2268ab3941507fda90eaedc93f6616d39efc22 Mon Sep 17 00:00:00 2001 From: Brian Warner <warner@lothar.com> Date: Thu, 4 Jan 2007 01:26:43 -0700 Subject: [PATCH] improve figleaf: fix some line-numbering bugs, add an alphabetically-sorted index HTML page --- src/allmydata/util/figleaf.py | 2 +- src/allmydata/util/figleaf_htmlizer.py | 45 +++++++++++++++++++++++--- 2 files changed, 41 insertions(+), 6 deletions(-) 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 > 90%%, %d files > 75%%, %d files > 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 > ' + '90%%, %d files > 75%%, %d files > 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)) -- 2.45.2