summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coverage/results.py21
-rw-r--r--test/test_results.py35
2 files changed, 46 insertions, 10 deletions
diff --git a/coverage/results.py b/coverage/results.py
index ec59482..b7156bd 100644
--- a/coverage/results.py
+++ b/coverage/results.py
@@ -35,11 +35,12 @@ class Analysis(object):
exec1 = self.parser.first_lines(self.executed)
self.missing = sorted(set(self.statements) - set(exec1))
- self.numbers = Numbers()
- self.numbers.n_files = 1
- self.numbers.n_statements = len(self.statements)
- self.numbers.n_excluded = len(self.excluded)
- self.numbers.n_missing = len(self.missing)
+ self.numbers = Numbers(
+ n_files=1,
+ n_statements=len(self.statements),
+ n_excluded=len(self.excluded),
+ n_missing=len(self.missing),
+ )
def missing_formatted(self):
"""The missing line numbers, formatted nicely.
@@ -118,11 +119,11 @@ class Numbers(object):
up statistics across files.
"""
- def __init__(self):
- self.n_files = 0
- self.n_statements = 0
- self.n_excluded = 0
- self.n_missing = 0
+ def __init__(self, n_files=0, n_statements=0, n_excluded=0, n_missing=0):
+ self.n_files = n_files
+ self.n_statements = n_statements
+ self.n_excluded = n_excluded
+ self.n_missing = n_missing
def _get_n_run(self):
"""Returns the number of executed statements."""
diff --git a/test/test_results.py b/test/test_results.py
new file mode 100644
index 0000000..d70a3b8
--- /dev/null
+++ b/test/test_results.py
@@ -0,0 +1,35 @@
+"""Tests for Coverage.py's results analysis."""
+
+import os, sys
+
+from coverage.results import Numbers
+
+sys.path.insert(0, os.path.split(__file__)[0]) # Force relative import for Py3k
+from coveragetest import CoverageTest
+
+
+class NumbersTest(CoverageTest):
+ """Tests for Coverage.py's numeric measurement summaries."""
+ def test_basic(self):
+ n1 = Numbers(n_files=1, n_statements=200, n_missing=20)
+ self.assertEqual(n1.n_statements, 200)
+ self.assertEqual(n1.n_run, 180)
+ self.assertEqual(n1.percent_covered, 90)
+
+ def test_addition(self):
+ n1 = Numbers(n_files=1, n_statements=200, n_missing=20)
+ n2 = Numbers(n_files=1, n_statements=10, n_missing=8)
+ n3 = n1 + n2
+ self.assertEqual(n3.n_files, 2)
+ self.assertEqual(n3.n_statements, 210)
+ self.assertEqual(n3.n_run, 182)
+ self.assertAlmostEqual(n3.percent_covered, 86.666666666)
+
+ def test_sum(self):
+ n1 = Numbers(n_files=1, n_statements=200, n_missing=20)
+ n2 = Numbers(n_files=1, n_statements=10, n_missing=8)
+ n3 = sum([n1, n2])
+ self.assertEqual(n3.n_files, 2)
+ self.assertEqual(n3.n_statements, 210)
+ self.assertEqual(n3.n_run, 182)
+ self.assertAlmostEqual(n3.percent_covered, 86.666666666)