name: Coverage
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: "-Cinstrument-coverage --cfg=coverage_nightly"
RUSTDOCFLAGS: "-Cinstrument-coverage --cfg=coverage_nightly -Z unstable-options --persist-doctests target/debug/doctestbins"
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install latest nightly
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
components: rustfmt, clippy, llvm-tools-preview
- name: install grcov
run: cargo install grcov
- name: run tests
run: LLVM_PROFILE_FILE="your_name-%p-%m.profraw" cargo test --all-features --verbose
- name: Generate coverage report
run: >
grcov . --binary-path ./target/debug/ -s . -t lcov --branch -o lcov.info
--ignore-not-existing --ignore "examples" --ignore "/*" --ignore "src/*test.rs" --ignore "src/fuzzing/*"
--excl-line "coverage-exclude"
--excl-start "coverage-exclude-start"
--excl-stop "coverage-exclude-stop"
--excl-br-line "coverage-exclude"
--excl-br-start "coverage-exclude-start"
--excl-br-stop "coverage-exclude-stop"
- name: Upload coverage
uses: codecov/codecov-action@v5
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: lcov.info
fail_ci_if_error: false
verbose: true