From 890919d14009c0fd3bcb25c6b175ecc2e8d3e847 Mon Sep 17 00:00:00 2001 From: Ryo Onodera Date: Wed, 12 Feb 2020 01:02:40 +0900 Subject: [PATCH] Reliably track proc macro & build.rs code coverage (#8210) --- scripts/coverage.sh | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/scripts/coverage.sh b/scripts/coverage.sh index 2399d79b0..062e41141 100755 --- a/scripts/coverage.sh +++ b/scripts/coverage.sh @@ -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 @@ -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