diff --git a/tests/coverage/coverage.py b/tests/coverage/coverage.py index f1491b4a9a8..9577f54e927 100755 --- a/tests/coverage/coverage.py +++ b/tests/coverage/coverage.py @@ -62,10 +62,11 @@ def run_report(argv): coverage_dir = build_dir / "coverage" analysis_dir = coverage_dir / "analysis" + reference_dir = coverage_dir / "reference" report_dir = coverage_dir / "report" parse(build_dir, analysis_dir) - report_as_html(analysis_dir, report_dir) + report_as_html(analysis_dir, report_dir, reference_dir=reference_dir) if not args.no_browser: webbrowser.open("file://" + str(report_dir / "index.html")) diff --git a/tests/coverage/coverage_report/build_report.py b/tests/coverage/coverage_report/build_report.py index ccf67227e59..56b12efd587 100644 --- a/tests/coverage/coverage_report/build_report.py +++ b/tests/coverage/coverage_report/build_report.py @@ -19,9 +19,11 @@ index_template_path = Path(__file__).parent / "index_template.html" single_file_template_path = Path(__file__).parent / "single_file_template.html" -def report_as_html(analysis_dir, report_dir): +def report_as_html(analysis_dir, report_dir, *, reference_dir=None): analysis_dir = Path(analysis_dir).absolute() report_dir = Path(report_dir).absolute() + if reference_dir is not None: + reference_dir = Path(reference_dir).absolute() if not analysis_dir.exists(): raise RuntimeError("Missing analysis at: {}".format(analysis_dir)) @@ -31,12 +33,12 @@ def report_as_html(analysis_dir, report_dir): except: pass - build_summary(analysis_dir, report_dir) + build_summary(analysis_dir, report_dir, reference_dir) build_file_pages(analysis_dir, report_dir) print("Report written to {}.".format(report_dir / "index.html")) -def build_summary(analysis_dir, report_dir): +def build_summary(analysis_dir, report_dir, reference_dir): print("Write index...") with open(index_template_path) as f: template = f.read() @@ -47,6 +49,13 @@ def build_summary(analysis_dir, report_dir): zip_file_to_compressed_base64(analysis_dir / "summary.json.zip"), ) + reference_data_str = "" + if reference_dir is not None: + reference_summary_path = reference_dir / "summary.json.zip" + if reference_summary_path.exists(): + reference_data_str = zip_file_to_compressed_base64(reference_summary_path) + result = result.replace("REFERENCE_DATA", reference_data_str) + report_summary_path = report_dir / "index.html" report_summary_path.parent.mkdir(parents=True, exist_ok=True) with open(report_summary_path, "w") as f: diff --git a/tests/coverage/coverage_report/index_template.html b/tests/coverage/coverage_report/index_template.html index eb8bd39ef29..f2517444ea5 100644 --- a/tests/coverage/coverage_report/index_template.html +++ b/tests/coverage/coverage_report/index_template.html @@ -105,6 +105,13 @@ width: 3em; } + .new-lines-row { + display: inline-block; + text-align: right; + width: 7em; + font-size: smaller; + } + .lines-total-row { display: inline-block; text-align: right; @@ -154,11 +161,21 @@