eric7/DebugClients/Python/coverage/jsonreport.py

branch
eric7
changeset 8775
0802ae193343
parent 8312
800c432b34c8
child 8991
2fc945191992
equal deleted inserted replaced
8774:d728227e8ebb 8775:0802ae193343
1 # coding: utf-8
2 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 1 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
3 # For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt 2 # For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
4 3
5 """Json reporting for coverage.py""" 4 """Json reporting for coverage.py"""
6 import datetime 5 import datetime
10 from coverage import __version__ 9 from coverage import __version__
11 from coverage.report import get_analysis_to_report 10 from coverage.report import get_analysis_to_report
12 from coverage.results import Numbers 11 from coverage.results import Numbers
13 12
14 13
15 class JsonReporter(object): 14 class JsonReporter:
16 """A reporter for writing JSON coverage results.""" 15 """A reporter for writing JSON coverage results."""
16
17 report_type = "JSON report"
17 18
18 def __init__(self, coverage): 19 def __init__(self, coverage):
19 self.coverage = coverage 20 self.coverage = coverage
20 self.config = self.coverage.config 21 self.config = self.coverage.config
21 self.total = Numbers() 22 self.total = Numbers(self.config.precision)
22 self.report_data = {} 23 self.report_data = {}
23 24
24 def report(self, morfs, outfile=None): 25 def report(self, morfs, outfile=None):
25 """Generate a json report for `morfs`. 26 """Generate a json report for `morfs`.
26 27
50 51
51 self.report_data["totals"] = { 52 self.report_data["totals"] = {
52 'covered_lines': self.total.n_executed, 53 'covered_lines': self.total.n_executed,
53 'num_statements': self.total.n_statements, 54 'num_statements': self.total.n_statements,
54 'percent_covered': self.total.pc_covered, 55 'percent_covered': self.total.pc_covered,
56 'percent_covered_display': self.total.pc_covered_str,
55 'missing_lines': self.total.n_missing, 57 'missing_lines': self.total.n_missing,
56 'excluded_lines': self.total.n_excluded, 58 'excluded_lines': self.total.n_excluded,
57 } 59 }
58 60
59 if coverage_data.has_arcs(): 61 if coverage_data.has_arcs():
78 self.total += nums 80 self.total += nums
79 summary = { 81 summary = {
80 'covered_lines': nums.n_executed, 82 'covered_lines': nums.n_executed,
81 'num_statements': nums.n_statements, 83 'num_statements': nums.n_statements,
82 'percent_covered': nums.pc_covered, 84 'percent_covered': nums.pc_covered,
85 'percent_covered_display': nums.pc_covered_str,
83 'missing_lines': nums.n_missing, 86 'missing_lines': nums.n_missing,
84 'excluded_lines': nums.n_excluded, 87 'excluded_lines': nums.n_excluded,
85 } 88 }
86 reported_file = { 89 reported_file = {
87 'executed_lines': sorted(analysis.executed), 90 'executed_lines': sorted(analysis.executed),
88 'summary': summary, 91 'summary': summary,
89 'missing_lines': sorted(analysis.missing), 92 'missing_lines': sorted(analysis.missing),
90 'excluded_lines': sorted(analysis.excluded) 93 'excluded_lines': sorted(analysis.excluded),
91 } 94 }
92 if self.config.json_show_contexts: 95 if self.config.json_show_contexts:
93 reported_file['contexts'] = analysis.data.contexts_by_lineno( 96 reported_file['contexts'] = analysis.data.contexts_by_lineno(analysis.filename)
94 analysis.filename,
95 )
96 if coverage_data.has_arcs(): 97 if coverage_data.has_arcs():
97 reported_file['summary'].update({ 98 reported_file['summary'].update({
98 'num_branches': nums.n_branches, 99 'num_branches': nums.n_branches,
99 'num_partial_branches': nums.n_partial_branches, 100 'num_partial_branches': nums.n_partial_branches,
100 'covered_branches': nums.n_executed_branches, 101 'covered_branches': nums.n_executed_branches,

eric ide

mercurial