Switch coverage format to LCOV #52
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: | | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends lcov | |
sudo apt-get clean | |
grep -F "branch_coverage" /etc/lcovrc | sed 's/branch_coverage = 0/branch_coverage = 1/g' >> $HOME/.lcovrc | |
grep -F "no_exception_branch" /etc/lcovrc | sed 's/no_exception_branch = 0/no_exception_branch = 1/g' >> $HOME/.lcovrc | |
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 --no-external --capture --initial --directory $( realpath .. ) --output-file /tmp/base.info | |
tests/tests -a | |
lcov --no-external --capture --directory $( realpath .. ) --output-file /tmp/test.info | |
lcov --add-tracefile /tmp/base.info --add-tracefile /tmp/test.info --output-file /tmp/total.info | |
lcov --remove /tmp/total.info "$( realpath . )/*" "$( realpath ../tests )/*" --output-file /tmp/filtered.info | |
cp /tmp/filtered.info "$( realpath .. )/coverage.txt" | |
- name: archive coverage data | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage.txt | |
path: coverage.txt | |
retention-days: 30 | |
- name: upload coverage report | |
uses: codecov/[email protected] | |
with: | |
fail_ci_if_error: true | |
file: coverage.txt | |
disable_search: true | |
verbose: true | |
plugin: noop | |
token: ${{ secrets.CODECOV_TOKEN }} |