Skip to content

Code Coverage

Code Coverage #23

Workflow file for this run

name: Code Coverage
on:
pull_request:
types: [opened, reopened, synchronize]
merge_group:
types: [checks_requested]
workflow_dispatch:
jobs:
test_with_coverage:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4.2.2
- name: install gcovr
uses: threeal/gcovr-action@v1.2.0
- name: Setup jq
uses: dcarbone/install-jq-action@v3
- name: install latest cmake and Ninja
uses: lukka/get-cmake@latest
- name: Install lcov
run: |
sudo apt-get update
sudo apt-get install -y lcov
- name: test
run: |
echo 'testing'
cmake -E env CXXFLAGS="--coverage" cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build -j $(nproc) --target tests/all
ctest --test-dir build --output-on-failure
lcov --capture --directory . --output-file coverage.info --ignore-errors inconsistent,gcov,mismatch,source
lcov --remove coverage.info '/usr/*' '*external*' '*build*' '*tests*' '*catch2*' --output-file coverage.info --ignore-errors unused
lcov --list coverage.info
bash <(curl -s https://codecov.io/bash) -t ${{ secrets.CODECOV_TOKEN }} -f coverage.info || echo "Codecov did not collect coverage reports"