Debug coverage workflow #840
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test coverage | |
on: | |
push: | |
branches: 'master' | |
paths-ignore: 'docs/**' | |
env: | |
RUST_BACKTRACE: 1 | |
PRUSTI_ASSERT_TIMEOUT: 60000 | |
# Disable incremental builds to reduce disk usage | |
CARGO_INCREMENTAL: 1 | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out the repo | |
uses: actions/checkout@v3 | |
- name: Set up Java | |
uses: actions/setup-java@v3 | |
with: | |
java-version: '15' | |
distribution: 'zulu' | |
- name: Set up the environment | |
run: python x.py setup | |
- name: Cache cargo | |
uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: "shared" | |
- name: Enable collection of source-based coverage | |
run: | | |
# The following are necessary for profiling (see https://github.com/mozilla/grcov) | |
echo "RUSTFLAGS=-Cinstrument-coverage" >> $GITHUB_ENV | |
echo "LLVM_PROFILE_FILE=${GITHUB_WORKSPACE}/target/coverage/gcov-%p-%m.profraw" >> $GITHUB_ENV | |
- name: Report disk usage | |
run: df -h | |
- name: Build with cargo | |
run: python x.py build --all | |
- name: Report disk usage | |
run: df -h | |
- name: Clear coverage generated by prusti-contracts-build | |
run: rm -rf target/coverage | |
- name: Report disk usage | |
run: df -h | |
- name: Run quick cargo tests | |
run: python x.py test --all quick | |
- name: Report disk usage | |
run: df -h | |
- name: Rerun quick cargo tests, enabling debug dumps to cover more code | |
run: python x.py test quick | |
env: | |
PRUSTI_DUMP_DEBUG_INFO: true | |
PRUSTI_DUMP_VIPER_PROGRAM: true | |
PRUSTI_IGNORE_REGIONS: true | |
- name: Report disk usage | |
run: df -h | |
- name: Check prusti-contracts | |
run: | | |
cd prusti-contracts/prusti-contracts-test/ | |
cargo build | |
- name: Report disk usage | |
run: df -h | |
- name: Run cargo tests | |
run: python x.py test --all | |
- name: Report disk usage | |
run: df -h | |
- name: Collect coverage | |
run: | | |
curl -sL https://github.com/mozilla/grcov/releases/latest/download/grcov-x86_64-unknown-linux-gnu.tar.bz2 | tar jxf - | |
./grcov . --llvm --binary-path ./target/debug/ -s . -t lcov --branch --ignore-not-existing --ignore "/*" -o lcov.info | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v1 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: ./lcov.info |