From f1fa57a4b57f42694ca4d82c876e5f347dcaa381 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Wed, 22 Oct 2014 22:04:46 -0400 Subject: Filtering now computes coverage percentages properly. --- coverage/html.py | 5 +++++ coverage/htmlfiles/coverage_html.js | 23 +++++++++++++++++++---- coverage/htmlfiles/index.html | 4 ++-- coverage/results.py | 11 +++++++++-- 4 files changed, 35 insertions(+), 8 deletions(-) (limited to 'coverage') diff --git a/coverage/html.py b/coverage/html.py index 91ae2c27..0829f219 100644 --- a/coverage/html.py +++ b/coverage/html.py @@ -67,6 +67,7 @@ class HtmlReporter(Reporter): self.directory = None self.template_globals = { 'escape': escape, + 'pair': pair, 'title': self.config.html_title, '__url__': coverage.__url__, '__version__': coverage.__version__, @@ -379,3 +380,7 @@ def spaceless(html): """ html = re.sub(r">\s+

\n

-1) { - // Value of "coverage" column is expressed as a percentage - footer_cell.text(parseInt((sum / show.length), 10) + '%'); + // Percentage columns use the numerator and denominator, + // and adapt to the number of decimal places. + var match = /\.([0-9]+)/.exec(cells[0].innerHTML); + var places = 0; + if (match) { + places = match[1].length; + } + var pct = numer * 100 / denom; + footer_cell.text(pct.toFixed(places) + '%'); } else { footer_cell.text(sum); diff --git a/coverage/htmlfiles/index.html b/coverage/htmlfiles/index.html index 4b572711..bea715e1 100644 --- a/coverage/htmlfiles/index.html +++ b/coverage/htmlfiles/index.html @@ -78,7 +78,7 @@ {{totals.n_branches}} {{totals.n_partial_branches}} {% endif %} - {{totals.pc_covered_str}}% + {{totals.pc_covered_str}}% @@ -92,7 +92,7 @@ {{file.nums.n_branches}} {{file.nums.n_partial_branches}} {% endif %} - {{file.nums.pc_covered_str}}% + {{file.nums.pc_covered_str}}% {% endfor %} diff --git a/coverage/results.py b/coverage/results.py index 6c41a944..5eff0f3e 100644 --- a/coverage/results.py +++ b/coverage/results.py @@ -204,8 +204,8 @@ class Numbers(object): def pc_covered(self): """Returns a single percentage value for coverage.""" if self.n_statements > 0: - pc_cov = (100.0 * (self.n_executed + self.n_executed_branches) / - (self.n_statements + self.n_branches)) + numerator, denominator = self.ratio_covered + pc_cov = (100.0 * numerator) / denominator else: pc_cov = 100.0 return pc_cov @@ -236,6 +236,13 @@ class Numbers(object): width += 1 + cls._precision return width + @property + def ratio_covered(self): + """Return a numerator and denominator for the coverage ratio.""" + numerator = self.n_executed + self.n_executed_branches + denominator = self.n_statements + self.n_branches + return numerator, denominator + def __add__(self, other): nums = Numbers() nums.n_files = self.n_files + other.n_files -- cgit v1.2.1