A GitHub Action and CLI tool that generates shields.io-style SVG badges for test coverage.
Add this step to your workflow after running your coverage tool:
- name: Generate coverage badge
uses: ozankasikci/rust-test-coverage-badge@v1
with:
coverage: ${{ steps.coverage.outputs.percentage }}
output: assets/coverage.svg
commit: trueThat's it! The action generates the badge and commits it to your repo. Then reference it in your README:
Click to expand complete workflow
name: Coverage
on:
push:
branches: [main]
permissions:
contents: write
jobs:
coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Replace with your actual coverage tool
- name: Run tests with coverage
id: coverage
run: |
# Example: extract coverage from your tool's output
# For tarpaulin: jq '.coverage' tarpaulin-report.json
# For pytest-cov: grep -oP 'TOTAL.*\s+\K\d+' coverage.txt
echo "percentage=85.5" >> $GITHUB_OUTPUT
- name: Generate coverage badge
uses: ozankasikci/rust-test-coverage-badge@v1
with:
coverage: ${{ steps.coverage.outputs.percentage }}
output: assets/coverage.svg
commit: true
commit-message: 'chore: update coverage badge'| Input | Required | Default | Description |
|---|---|---|---|
coverage |
Yes | - | Coverage percentage (0-100, decimals allowed) |
output |
Yes | - | Output path for the SVG file |
commit |
No | false |
Commit and push the badge |
commit-message |
No | Update coverage badge |
Custom commit message |
For local development or custom setups, use the CLI directly.
Install:
# Via Cargo
cargo install coverage-badge
# Or download from Releases
# https://github.com/ozankasikci/rust-test-coverage-badge/releasesRun:
coverage-badge -c 85 -o assets/coverage.svg| Option | Short | Description |
|---|---|---|
--coverage |
-c |
Coverage percentage (0-100, decimals allowed) |
--output |
-o |
Output path for the SVG file |
| Coverage | Color |
|---|---|
| < 50% | Red |
| 50-79% | Yellow |
| ≥ 80% | Green |
MIT