Skip to content

Commit

Permalink
create coverage.yaml (#102)
Browse files Browse the repository at this point in the history
* create coverage.yaml

* fix

* fixup

* add installing dependencies

* speedup by removing build step and fix md->markdown

* remove empty line

* set coverage threshold to 65
  • Loading branch information
sfraczek authored Mar 7, 2024
1 parent 3504c03 commit 34f2100
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .github/workflows/building.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
profile: minimal
toolchain: stable
override: true
- run: rustup component add rustfmt
components: rustfmt
- uses: actions-rs/cargo@v1
with:
command: fmt
Expand Down
61 changes: 61 additions & 0 deletions .github/workflows/coverage.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Code Coverage

on: [pull_request]

jobs:
coverage:
runs-on: ubuntu-latest

steps:
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libx11-dev libxext-dev libxft-dev libxinerama-dev libxcursor-dev libxrender-dev libxfixes-dev libpango1.0-dev
- name: Checkout repository
uses: actions/checkout@v4

- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
components: llvm-tools-preview

- name: Install grcov
uses: actions-rs/cargo@v1
with:
command: install
args: grcov

- name: Run tests for coverage
uses: actions-rs/cargo@v1
with:
command: test
env:
LLVM_PROFILE_FILE: profile-%p-%m.profraw
RUSTFLAGS: "-C instrument-coverage"

- name: Generate coverage html report
run: grcov . -s . --binary-path ./target/debug -t html --branch --ignore-not-existing --ignore "/*" -o ./coverage/

- name: Upload coverage html report
uses: actions/upload-artifact@v4
with:
name: coverage-html-report
path: coverage/

- name: Generate coverage lcov report
run: grcov . -s . --binary-path ./target/debug -t markdown --branch --ignore-not-existing --ignore "/*" -o coverage.md

- name: Check coverage percentage
run: |
COVERAGE_PERCENTAGE=$(tail -n 1 coverage.md | grep -oP '(\d+(\.\d+)?)(?=%)')
echo "Coverage percentage is $COVERAGE_PERCENTAGE%"
if (( $(echo "$COVERAGE_PERCENTAGE < $COVERAGE_THRESHOLD" | bc -l) )); then
echo "Code coverage is below $COVERAGE_THRESHOLD%. Failing the workflow."
exit 1
fi
env:
COVERAGE_THRESHOLD: 65

0 comments on commit 34f2100

Please sign in to comment.