Switch coverage format to LCOV #34
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Action workflow | |
on: [push, pull_request] | |
jobs: | |
build: | |
name: Build Project | |
strategy: | |
fail-fast: false | |
matrix: | |
configuration: | |
- Debug | |
- Release | |
runs-on: ubuntu-latest | |
env: | |
build_dir: .build | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: configure | |
shell: bash | |
run: | | |
mkdir ${build_dir} | |
cd ${build_dir} | |
cmake \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.configuration }} \ | |
-DCMAKE_C_COMPILER=$(which gcc) \ | |
-DCMAKE_CXX_COMPILER=$(which g++) \ | |
.. | |
- name: build all targets | |
shell: bash | |
run: | | |
pushd ${build_dir} | |
cmake --build . --target all | |
popd | |
mv ${build_dir}/tests/tests ./tests-${{ matrix.configuration }} | |
- name: upload tests binary | |
uses: actions/upload-artifact@v4 | |
with: | |
name: tests-${{ matrix.configuration }} | |
path: tests-${{ matrix.configuration }} | |
if-no-files-found: error | |
tests: | |
name: Run Tests | |
strategy: | |
fail-fast: false | |
matrix: | |
configuration: | |
- Debug | |
- Release | |
needs: build | |
runs-on: ubuntu-latest | |
env: | |
build_dir: .build | |
steps: | |
- name: download tests binary | |
uses: actions/download-artifact@v4 | |
with: | |
name: tests-${{ matrix.configuration }} | |
- name: prepare tests location | |
shell: bash | |
run: | | |
mkdir ${build_dir} | |
mv ./tests-${{ matrix.configuration }} ${build_dir}/tests | |
chmod 755 ${build_dir}/tests | |
- name: run tests | |
shell: bash | |
run: | | |
cd ${build_dir} | |
./tests -r compact | |
coverage: | |
if: ${{ github.event_name == 'push' }} | |
name: Prepare Coverage Report | |
strategy: | |
fail-fast: false | |
matrix: | |
configuration: | |
- Debug | |
runs-on: ubuntu-latest | |
env: | |
build_dir: .build | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: configure | |
shell: bash | |
run: | | |
DEBIAN_FRONTEND=noninteractive | |
apt-get update | |
apt-get install -y --no-install-recommends lcov | |
apt-get clean | |
mkdir ${build_dir} | |
cd ${build_dir} | |
cmake \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.configuration }} \ | |
-DCMAKE_C_COMPILER=$(which gcc) \ | |
-DCMAKE_C_FLAGS="-g --coverage -fprofile-abs-path -fno-early-inlining" \ | |
-DCMAKE_CXX_COMPILER=$(which g++) \ | |
-DCMAKE_CXX_FLAGS="-g --coverage -fprofile-abs-path -fno-early-inlining" \ | |
.. | |
- name: build, run tests, prepare coverage data | |
shell: bash | |
run: | | |
cd ${build_dir} | |
cmake --build . | |
lcov --rc lcov_branch_coverage=1 --no-external --capture --initial --directory $( realpath .. ) --output-file /tmp/base.info | |
tests/tests -a | |
lcov --rc lcov_branch_coverage=1 --no-external --capture --directory $( realpath .. ) --output-file /tmp/test.info | |
lcov --rc lcov_branch_coverage=1 --add-tracefile /tmp/base.info --add-tracefile /tmp/test.info --output-file /tmp/total.info | |
lcov --rc lcov_branch_coverage=1 --remove /tmp/total.info "$( realpath . )" "$( realpath ../tests )" --output-file /tmp/filtered.info | |
cp /tmp/filtered.info coverage.txt | |
- name: upload coverage report | |
uses: codecov/[email protected] | |
with: | |
fail_ci_if_error: true | |
file: ${build_dir}/coverage.txt | |
disable_search: true | |
verbose: true | |
plugin: noop | |
token: ${{ secrets.CODECOV_TOKEN }} |