You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
"""Summary reporting"""
 | 
						|
 | 
						|
import sys
 | 
						|
 | 
						|
from coverage.report import Reporter
 | 
						|
from coverage.results import Numbers
 | 
						|
from coverage.misc import NotPython
 | 
						|
 | 
						|
 | 
						|
class SummaryReporter(Reporter):
 | 
						|
    """A reporter for writing the summary report."""
 | 
						|
 | 
						|
    def __init__(self, coverage, config):
 | 
						|
        super(SummaryReporter, self).__init__(coverage, config)
 | 
						|
        self.branches = coverage.data.has_arcs()
 | 
						|
 | 
						|
    def report(self, morfs, outfile=None):
 | 
						|
        """Writes a report summarizing coverage statistics per module.
 | 
						|
 | 
						|
        `outfile` is a file object to write the summary to.
 | 
						|
 | 
						|
        """
 | 
						|
        self.find_code_units(morfs)
 | 
						|
 | 
						|
        # Prepare the formatting strings
 | 
						|
        max_name = max([len(cu.name) for cu in self.code_units] + [5])
 | 
						|
        fmt_name = "%%- %ds  " % max_name
 | 
						|
        fmt_err = "%s   %s: %s\n"
 | 
						|
        header = (fmt_name % "Name") + " Stmts   Miss"
 | 
						|
        fmt_coverage = fmt_name + "%6d %6d"
 | 
						|
        if self.branches:
 | 
						|
            header += " Branch BrMiss"
 | 
						|
            fmt_coverage += " %6d %6d"
 | 
						|
        width100 = Numbers.pc_str_width()
 | 
						|
        header += "%*s" % (width100+4, "Cover")
 | 
						|
        fmt_coverage += "%%%ds%%%%" % (width100+3,)
 | 
						|
        if self.config.show_missing:
 | 
						|
            header += "   Missing"
 | 
						|
            fmt_coverage += "   %s"
 | 
						|
        rule = "-" * len(header) + "\n"
 | 
						|
        header += "\n"
 | 
						|
        fmt_coverage += "\n"
 | 
						|
 | 
						|
        if not outfile:
 | 
						|
            outfile = sys.stdout
 | 
						|
 | 
						|
        # Write the header
 | 
						|
        outfile.write(header)
 | 
						|
        outfile.write(rule)
 | 
						|
 | 
						|
        total = Numbers()
 | 
						|
 | 
						|
        for cu in self.code_units:
 | 
						|
            try:
 | 
						|
                analysis = self.coverage._analyze(cu)
 | 
						|
                nums = analysis.numbers
 | 
						|
                args = (cu.name, nums.n_statements, nums.n_missing)
 | 
						|
                if self.branches:
 | 
						|
                    args += (nums.n_branches, nums.n_missing_branches)
 | 
						|
                args += (nums.pc_covered_str,)
 | 
						|
                if self.config.show_missing:
 | 
						|
                    args += (analysis.missing_formatted(),)
 | 
						|
                outfile.write(fmt_coverage % args)
 | 
						|
                total += nums
 | 
						|
            except KeyboardInterrupt:                   # pragma: not covered
 | 
						|
                raise
 | 
						|
            except:
 | 
						|
                report_it = not self.config.ignore_errors
 | 
						|
                if report_it:
 | 
						|
                    typ, msg = sys.exc_info()[:2]
 | 
						|
                    if typ is NotPython and not cu.should_be_python():
 | 
						|
                        report_it = False
 | 
						|
                if report_it:
 | 
						|
                    outfile.write(fmt_err % (cu.name, typ.__name__, msg))
 | 
						|
 | 
						|
        if total.n_files > 1:
 | 
						|
            outfile.write(rule)
 | 
						|
            args = ("TOTAL", total.n_statements, total.n_missing)
 | 
						|
            if self.branches:
 | 
						|
                args += (total.n_branches, total.n_missing_branches)
 | 
						|
            args += (total.pc_covered_str,)
 | 
						|
            if self.config.show_missing:
 | 
						|
                args += ("",)
 | 
						|
            outfile.write(fmt_coverage % args)
 | 
						|
 | 
						|
        return total.pc_covered
 |