blob: 648de5eeef0ddb9470cfc33fa6468dffdee40f6f [file] [log] [blame]
Brian Silverman5f6f2762022-08-13 19:30:05 -07001#!/usr/bin/env bash
2
3set -euo pipefail
4
5if [[ -n "${VERBOSE_COVERAGE:-}" ]]; then
6 set -x
7fi
8
Adam Snaider1c095c92023-07-08 02:09:58 -04009if [[ "${RUNFILES_DIR:0:1}" != "/" ]]; then
10 if [[ -n "${ROOT}" ]]; then
11 RUNFILES_DIR="${ROOT}/${RUNFILES_DIR}"
12 fi
13fi
14
Brian Silverman5f6f2762022-08-13 19:30:05 -070015readonly profdata_file=$COVERAGE_DIR/coverage.profdata
16
Adam Snaider1c095c92023-07-08 02:09:58 -040017"$RUNFILES_DIR/$RUST_LLVM_PROFDATA" \
Brian Silverman5f6f2762022-08-13 19:30:05 -070018 merge \
19 --sparse "$COVERAGE_DIR"/*.profraw \
20 -output "$profdata_file"
21
Adam Snaider1c095c92023-07-08 02:09:58 -040022"$RUNFILES_DIR/$RUST_LLVM_COV" \
Brian Silverman5f6f2762022-08-13 19:30:05 -070023 export \
24 -format=lcov \
25 -instr-profile "$profdata_file" \
26 -ignore-filename-regex='.*external/.+' \
27 -ignore-filename-regex='/tmp/.+' \
28 -path-equivalence=.,"$ROOT" \
29 "$RUNFILES_DIR/$TEST_WORKSPACE/$TEST_BINARY" \
30 @"$COVERAGE_MANIFEST" \
Adam Snaider1c095c92023-07-08 02:09:58 -040031 | sed 's#/proc/self/cwd/##' > "$COVERAGE_DIR/rust_coverage.dat"
32
33# Bazel doesn't support LLVM profdata coverage amongst other coverage formats.
34rm "$profdata_file"