Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generate rust coverage data #84

Merged
merged 2 commits into from
Oct 30, 2024
Merged
Changes from 1 commit
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
42 changes: 36 additions & 6 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ jobs:
overwrite: true

coverage:
name: Combine & check coverage.
needs: tests
name: Combine & diff check coverage.
needs: [tests, cargo-test]
runs-on: ubuntu-latest

steps:
Expand All @@ -76,20 +76,30 @@ jobs:
run: |
pip install --upgrade "coverage[toml]>=5.1" diff-cover

- uses: actions/download-artifact@v4
- name: Install lcov
run: sudo apt-get update && sudo apt-get install -yqq lcov

- name: Download python coverage data
uses: actions/download-artifact@v4
with:
name: coverage-data

- name: Download rust coverage data
uses: actions/download-artifact@v4
with:
name: rust-coverage-data

- name: Fetch main for coverage diff
run: |
git fetch --no-tags --prune origin main

- name: Combine coverage & fail if it's <100%.
run: |
python -m coverage combine
python -m coverage html --skip-covered --skip-empty
python -m coverage xml
diff-cover coverage.xml --markdown-report=coverage.md --fail-under=100 || (cat coverage.md >> $GITHUB_STEP_SUMMARY && exit 1)
python -m coverage lcov
lcov -a coverage.lcov -a lcov.info -o combined_coverage
genhtml combined_coverage --output-directory htmlcov
diff-cover combined_coverage --markdown-report=coverage.md --fail-under=100 || (cat coverage.md >> $GITHUB_STEP_SUMMARY && exit 1)

- name: Upload HTML report if check failed.
uses: actions/upload-artifact@v4
Expand All @@ -113,11 +123,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true

- name: Cache Cargo dependencies
uses: actions/cache@v2
with:
Expand All @@ -126,8 +138,26 @@ jobs:
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}

- name: Run cargo test
run: cargo test

- name: Install cargo tarpaulin
run: cargo install cargo-tarpaulin

- name: Generate rust code coverage
run: cargo tarpaulin --out=Lcov --output-dir=rust-coverage --engine=llvm --no-dead-code --workspace --verbose
env:
RUSTFLAGS: -C instrument-coverage

- name: Upload rust coverage data
uses: actions/upload-artifact@v4
with:
name: rust-coverage-data
path: rust-coverage/
if-no-files-found: ignore
include-hidden-files: true
overwrite: true

cargo-audit:
name: Run Cargo audit
Expand Down
Loading