Tue, 24 May 2022 11:00:52 +0200
Third Party packages
- upgraded coverage to 6.4.0
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | # For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | """Json reporting for coverage.py""" |
8991
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
5 | |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | import datetime |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | import json |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | import sys |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | from coverage import __version__ |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | from coverage.report import get_analysis_to_report |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | from coverage.results import Numbers |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
15 | class JsonReporter: |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | """A reporter for writing JSON coverage results.""" |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
18 | report_type = "JSON report" |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
19 | |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | def __init__(self, coverage): |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | self.coverage = coverage |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | self.config = self.coverage.config |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
23 | self.total = Numbers(self.config.precision) |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | self.report_data = {} |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | def report(self, morfs, outfile=None): |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | """Generate a json report for `morfs`. |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | `morfs` is a list of modules or file names. |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | |
8991
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
31 | `outfile` is a file object to write the json to. |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | """ |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | outfile = outfile or sys.stdout |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | coverage_data = self.coverage.get_data() |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | coverage_data.set_query_contexts(self.config.report_contexts) |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | self.report_data["meta"] = { |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | "version": __version__, |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | "timestamp": datetime.datetime.now().isoformat(), |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | "branch_coverage": coverage_data.has_arcs(), |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | "show_contexts": self.config.json_show_contexts, |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | } |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | measured_files = {} |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | for file_reporter, analysis in get_analysis_to_report(self.coverage, morfs): |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | measured_files[file_reporter.relative_filename()] = self.report_one_file( |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | coverage_data, |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | analysis |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | ) |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | self.report_data["files"] = measured_files |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | self.report_data["totals"] = { |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | 'covered_lines': self.total.n_executed, |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | 'num_statements': self.total.n_statements, |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | 'percent_covered': self.total.pc_covered, |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
57 | 'percent_covered_display': self.total.pc_covered_str, |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | 'missing_lines': self.total.n_missing, |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | 'excluded_lines': self.total.n_excluded, |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | } |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | if coverage_data.has_arcs(): |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | self.report_data["totals"].update({ |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | 'num_branches': self.total.n_branches, |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | 'num_partial_branches': self.total.n_partial_branches, |
7702
f8b97639deb5
Third Party packages: updated coverage.py to 5.3.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7427
diff
changeset
|
66 | 'covered_branches': self.total.n_executed_branches, |
f8b97639deb5
Third Party packages: updated coverage.py to 5.3.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7427
diff
changeset
|
67 | 'missing_branches': self.total.n_missing_branches, |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | }) |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | json.dump( |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | self.report_data, |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | outfile, |
9099
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8991
diff
changeset
|
73 | indent=(4 if self.config.json_pretty_print else None), |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | ) |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | return self.total.n_statements and self.total.pc_covered |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | def report_one_file(self, coverage_data, analysis): |
8991
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
79 | """Extract the relevant report data for a single file.""" |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | nums = analysis.numbers |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | self.total += nums |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | summary = { |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | 'covered_lines': nums.n_executed, |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | 'num_statements': nums.n_statements, |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | 'percent_covered': nums.pc_covered, |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
86 | 'percent_covered_display': nums.pc_covered_str, |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | 'missing_lines': nums.n_missing, |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | 'excluded_lines': nums.n_excluded, |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | } |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | reported_file = { |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | 'executed_lines': sorted(analysis.executed), |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | 'summary': summary, |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | 'missing_lines': sorted(analysis.missing), |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
94 | 'excluded_lines': sorted(analysis.excluded), |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | } |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | if self.config.json_show_contexts: |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
97 | reported_file['contexts'] = analysis.data.contexts_by_lineno(analysis.filename) |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | if coverage_data.has_arcs(): |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | reported_file['summary'].update({ |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | 'num_branches': nums.n_branches, |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | 'num_partial_branches': nums.n_partial_branches, |
7702
f8b97639deb5
Third Party packages: updated coverage.py to 5.3.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7427
diff
changeset
|
102 | 'covered_branches': nums.n_executed_branches, |
f8b97639deb5
Third Party packages: updated coverage.py to 5.3.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7427
diff
changeset
|
103 | 'missing_branches': nums.n_missing_branches, |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | }) |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | return reported_file |