mirror of
https://github.com/logos-messaging/logos-messaging-rust-bindings.git
synced 2026-01-03 14:33:06 +00:00
71 lines
1.8 KiB
YAML
71 lines
1.8 KiB
YAML
on:
|
||
pull_request:
|
||
push:
|
||
branches:
|
||
- master
|
||
|
||
name: Codecov
|
||
|
||
jobs:
|
||
test-and-coverage:
|
||
runs-on: ubuntu-latest
|
||
env:
|
||
CARGO_INCREMENTAL: 0
|
||
RUSTFLAGS: "-C instrument-coverage"
|
||
LLVM_PROFILE_FILE: "coverage-%p-%m.profraw"
|
||
|
||
steps:
|
||
# 1️⃣ Checkout the repo
|
||
- name: Checkout code
|
||
uses: actions/checkout@v4
|
||
|
||
# 2️⃣ Install Rust toolchain (nightly required for coverage)
|
||
- name: Set up Rust
|
||
uses: dtolnay/rust-toolchain@stable
|
||
with:
|
||
toolchain: nightly
|
||
components: llvm-tools-preview
|
||
|
||
# 3️⃣ Cache build artifacts for faster CI
|
||
- name: Cache cargo build
|
||
uses: actions/cache@v4
|
||
with:
|
||
path: |
|
||
~/.cargo/registry
|
||
~/.cargo/git
|
||
target
|
||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
||
|
||
# 4️⃣ Build and test with coverage instrumentation
|
||
- name: Run tests
|
||
run: |
|
||
cargo build --all-features
|
||
cargo test --all-features
|
||
|
||
# 5️⃣ Install grcov
|
||
- name: Install grcov
|
||
run: cargo install grcov
|
||
|
||
# 6️⃣ Generate lcov report
|
||
- name: Generate coverage report
|
||
run: |
|
||
mkdir -p coverage
|
||
grcov . \
|
||
--binary-path ./target/debug/ \
|
||
-s . \
|
||
-t lcov \
|
||
--branch \
|
||
--ignore-not-existing \
|
||
--ignore '../*' \
|
||
--ignore "/*" \
|
||
-o coverage/tests.lcov
|
||
|
||
# 7️⃣ Upload to Codecov
|
||
- name: Upload coverage to Codecov
|
||
uses: codecov/codecov-action@v4
|
||
with:
|
||
token: ${{ secrets.CODECOV_TOKEN }} # only needed for private repos
|
||
files: coverage/tests.lcov
|
||
fail_ci_if_error: true
|
||
flags: unittests
|
||
name: rust-codecov |