Skip to content

Commit

Permalink
Limit coverage to requested files (#1467)
Browse files Browse the repository at this point in the history
Bazel provides COVERAGE_MANIFEST which is a file we can pass through to
llvm-cov to limit the files that we produce coverage for. Using this
revealed the path-equivalence was backwards because we're using the
coverage prefix map to disable absolute paths in code coverage info,
but llvm-cov operates on absolute paths, so we have to remap the `.` in
the coverage data to the full path so that llvm-cov understands the
relative paths (which it absolutizes internal) from the manifest file.
This feels a bit weird and ideally it could operate entirely on these
relative paths instead.

This has the side effect of excluding files that aren't part of bazel
sources, which fixes #1466

This should also improve interaction with `--instrumentation_filter`.

Co-authored-by: UebelAndre <github@uebelandre.com>
  • Loading branch information
keith and UebelAndre authored Jul 15, 2022
1 parent daff327 commit e83d5f3
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion util/collect_coverage.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ readonly profdata_file=$COVERAGE_DIR/coverage.profdata
-instr-profile "$profdata_file" \
-ignore-filename-regex='.*external/.+' \
-ignore-filename-regex='/tmp/.+' \
-path-equivalence="$ROOT",. \
-path-equivalence=.,"$ROOT" \
"$RUNFILES_DIR/$TEST_WORKSPACE/$TEST_BINARY" \
@"$COVERAGE_MANIFEST" \
| sed 's#/proc/self/cwd/##' > "$COVERAGE_OUTPUT_FILE"

0 comments on commit e83d5f3

Please sign in to comment.