Skip to content

Commit

Permalink
fix: report line coverage instead of function coverage
Browse files Browse the repository at this point in the history
It seems that the raw output of llvm-cov changed at some point, and we
ended upcomparing functoin coverage instead of line coverage. Fix this
by instead using the new json output, which will hopefully prevent such
goofs in the future.

Fixes #170
Signed-off-by: Patrick Roy <[email protected]>
  • Loading branch information
roypat committed Oct 23, 2024
1 parent 2122417 commit de58af0
Showing 1 changed file with 3 additions and 8 deletions.
11 changes: 3 additions & 8 deletions integration_tests/test_coverage.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ def _get_current_coverage(coverage_config, no_cleanup, test_scope):
shutil.rmtree(cov_build_dir, ignore_errors=True)

llvm_cov_command = (
f"CARGO_TARGET_DIR={cov_build_dir} cargo llvm-cov test --summary-only"
f"CARGO_TARGET_DIR={cov_build_dir} cargo llvm-cov test --json --summary-only"
)

additional_exclude_path = coverage_config["exclude_path"]
Expand All @@ -97,13 +97,8 @@ def _get_current_coverage(coverage_config, no_cleanup, test_scope):
llvm_cov_command, shell=True, check=True, input=b"", stdout=subprocess.PIPE
)

summary = result.stdout.split(b"\n")[-2]
# Output of llvm-cov is like
# TOTAL 743 153 79.41% 185 50 72.97% 1531 125 91.84% 0 0 -
# where the first three numbers are related to region coverage, and next three to line coverage (what we want)
# and the last three to branch coverage (which is not yet supported). Below grabs the line coverage, and strips
# off the '%'.
coverage = float(summary.split()[6][:-1])
summary = json.loads(result.stdout)
coverage = summary["data"][0]["totals"]["lines"]["percent"]

shutil.rmtree(cov_build_dir, ignore_errors=True)

Expand Down

0 comments on commit de58af0

Please sign in to comment.