1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# coding: utf8
# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt
"""Test text-based summary reporter for coverage.py"""
import os.path
from coverage.backward import StringIO
from coverage.backunittest import TestCase
from coverage.config import CoverageConfig
from coverage.control import Coverage
from coverage.data import CoverageData
from coverage.summary import SummaryReporter
LINES_1 = {
__file__: {-1: 1, 7: 1},
os.path.join(os.path.dirname(__file__), 'helpers.py'): {-1: 1, 7: 1},
}
class TestSummaryReporterConfiguration(TestCase):
"""Tests of SummaryReporter."""
def get_coverage_data(self, lines):
"""Get a CoverageData object that includes the requested lines."""
data = CoverageData()
data.add_lines(lines)
return data
def get_summary_text(self, coverage_data, options):
"""Get text output from the SummaryReporter."""
cov = Coverage()
cov.data = coverage_data
printer = SummaryReporter(cov, options)
destination = StringIO()
printer.report([], destination)
return destination.getvalue()
def test_defaults(self):
"""Run the report with no configuration options."""
data = self.get_coverage_data(LINES_1)
opts = CoverageConfig()
report = self.get_summary_text(data, opts)
self.assertNotIn('Missing', report)
self.assertNotIn('Branch', report)
def test_print_missing(self):
"""Run the report printing the missing lines."""
data = self.get_coverage_data(LINES_1)
opts = CoverageConfig()
opts.from_args(show_missing=True)
report = self.get_summary_text(data, opts)
self.assertTrue('Missing' in report)
self.assertNotIn('Branch', report)
def test_sort_report(self):
"""Sort the text report."""
data = self.get_coverage_data(LINES_1)
opts = CoverageConfig()
opts.from_args(sort='Stmts')
report = self.get_summary_text(data, opts)
# just the basename, to avoid pyc and directory name complexities
filename = os.path.splitext(os.path.basename(__file__))[0]
location1 = report.find('helpers')
location2 = report.find(filename)
self.assertTrue(location1 < location2)
|