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

chore: add llvm-cov to CI #725

Closed
wants to merge 14 commits into from
63 changes: 63 additions & 0 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Coverage

on:
push:
branches: ["main"]
pull_request:
branches: ["**"]

jobs:
coverage:
runs-on:
- runs-on=${{ github.run_id }}
- runner=64cpu-linux-arm64
- tag=coverage
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Install Rust toolchain (nightly)
uses: dtolnay/rust-toolchain@nightly

- name: Install llvm-tools-preview component
run: rustup component add llvm-tools-preview --toolchain nightly

- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true

- name: Install cargo-llvm-cov
run: cargo install cargo-llvm-cov

- name: Run coverage
run: RUST_MIN_STACK=8388608 AXIOM_FAST_TEST=1 cargo llvm-cov --json --output-path=coverage --jobs $(nproc) --profile=fast --features parallel --ignore-filename-regex 'tests|examples' --no-report

- name: Generate report
run: cargo llvm-cov --json --output-path coverage/

- name: Parse detailed coverage report
id: parse
run: |
# Initialize the markdown table header
echo "| File | Coverage | Total Lines | Covered Lines |" > coverage_table.md
echo "|--------------------|----------|-------------|---------------|" >> coverage_table.md

# Parse each file's data and append it to the table
jq -r '.files[] | "| \(.file) | \(.coverage.lines.percent)% | \(.coverage.lines.total) | \(.coverage.lines.covered) |"' coverage.json >> coverage_table.md

- name: Set markdown table as output
id: table_output
run: echo "table=$(< coverage_table.md)" >> $GITHUB_ENV

- name: Post detailed coverage results as PR comment
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const table = process.env.table;
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `### Detailed Coverage Report\n\n${table.replace(/\|/g, '\\|')}`
});
Loading