Skip to content
This repository has been archived by the owner on Jan 13, 2025. It is now read-only.

Reliably track proc macro & build.rs code coverage #8210

Merged
merged 1 commit into from
Feb 11, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion scripts/coverage.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,28 @@ if [[ -d target/cov ]]; then
fi
rm -rf target/cov/$reportName
mkdir -p target/cov

# Mark the base time for a clean room dir
timing_file=target/cov/before-test
touch "$timing_file"

source ci/rust-version.sh nightly

# Force rebuild of possibly-cached proc macro crates and build.rs because
# we always want stable coverage for them
# Don't support odd file names in our repo ever
# shellcheck disable=SC2046
touch \
$(git ls-files :**/build.rs) \
$(git grep -l "proc-macro.*true" :**/Cargo.toml | sed 's|Cargo.toml|src/lib.rs|')

RUST_LOG=solana=trace _ cargo +$rust_nightly test --target-dir target/cov --no-run "${packages[@]}"
RUST_LOG=solana=trace _ cargo +$rust_nightly test --target-dir target/cov "${packages[@]}" 2> target/cov/coverage-stderr.log

echo "--- grcov"

# Create a clean room dir only with updated gcda/gcno files for this run
# Create a clean room dir only with updated gcda/gcno files for this run,
# because our cached target dir is full of other builds' coverage files
rm -rf target/cov/tmp
mkdir -p target/cov/tmp

Expand All @@ -66,6 +77,8 @@ echo "--- filter-files-from-lcov"
ignored_directories="^(bench-tps|upload-perf|bench-streamer|bench-exchange)"

filter-files-from-lcov() {
# this function is too noisy for casual bash -x
set +x
declare skip=false
while read -r line; do
if [[ $line =~ ^SF:/ ]]; then
Expand Down