# 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 collections
import unittest
import os.path
try:
    from cStringIO import StringIO
except ImportError:
    from StringIO import StringIO
from coverage import summary, data, control, config

LINES_1 = {
    __file__: {-1: 1, 7: 1},
    os.path.join(os.path.dirname(__file__), 'helpers.py'): {-1: 1, 7: 1},
}


class TestSummaryReporterConfiguration(unittest.TestCase):
    def get_coverage_data(self, lines=LINES_1):
        """Get a CoverageData object that includes the requested lines."""
        data1 = data.CoverageData()
        data1.add_lines(lines)
        return data1

    def get_summary_text(self, coverage_data, options):
        """Get text output from the SummaryReporter."""
        cov = control.Coverage()
        cov.data = coverage_data
        printer = summary.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()
        opts = config.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()
        opts = config.CoverageConfig()
        opts.from_args(show_missing=True)
        report = self.get_summary_text(data, opts)
        self.assertIn('Missing', report)
        self.assertNotIn('Branch', report)

Add unit-level test for the SummaryReporter Tests configuration of the report method of SummaryReader