summaryrefslogtreecommitdiff
path: root/.github/workflows/code_coverage.yml
diff options
context:
space:
mode:
authorMitya Selivanov <0x7fffff@guattari.ru>2022-08-21 18:31:23 +0400
committerMitya Selivanov <0x7fffff@guattari.ru>2022-08-21 18:31:23 +0400
commit2a52317321e2948f57c793a22e7992260150dcb2 (patch)
tree621fbc4552f663cc2cf76b7a182e42b214f1a030 /.github/workflows/code_coverage.yml
parente14afcfd34a17dc0f796f201bbe513c314624d18 (diff)
downloadkit-2a52317321e2948f57c793a22e7992260150dcb2.zip
Separate code coverage reporting to another CI script
Diffstat (limited to '.github/workflows/code_coverage.yml')
-rw-r--r--.github/workflows/code_coverage.yml82
1 files changed, 82 insertions, 0 deletions
diff --git a/.github/workflows/code_coverage.yml b/.github/workflows/code_coverage.yml
new file mode 100644
index 0000000..5c84fb5
--- /dev/null
+++ b/.github/workflows/code_coverage.yml
@@ -0,0 +1,82 @@
+name: Code coverage
+
+on:
+ push:
+ branches: [ stable ]
+ pull_request:
+ branches: [ stable ]
+ schedule:
+ - cron: '0 0 */16 * *'
+ workflow_dispatch:
+
+env:
+ BUILD_TYPE: Debug
+
+jobs:
+ build:
+ strategy:
+ matrix:
+ os: [ ubuntu-latest, macos-latest, windows-2019 ]
+
+ runs-on: ${{ matrix.os }}
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Install gcovr
+ if: runner.os != 'Windows'
+ run: |
+ python3 -m pip install gcovr==5.0
+
+ - name: Install OpenCppCoverage
+ if: runner.os == 'Windows'
+ shell: bash
+ run: |
+ choco install opencppcoverage
+ echo "C:/Program Files/OpenCppCoverage" >> $GITHUB_PATH
+
+ - name: Build
+ if: runner.os != 'Windows'
+ run: |
+ cmake -D CMAKE_BUILD_TYPE=$BUILD_TYPE -B build -S .
+ cmake --build build --config $BUILD_TYPE
+
+ - name: Build with Visual Studio
+ if: runner.os == 'Windows'
+ shell: bash
+ run: |
+ cmake -B build -S .
+ cmake --build build --config $BUILD_TYPE
+
+ - name: Run tests
+ if: runner.os != 'Windows'
+ working-directory: ${{ github.workspace }}/build
+ run: |
+ ctest -V -C $BUILD_TYPE
+
+ - name: Generate coverage on Linux
+ if: runner.os == 'Linux'
+ working-directory: ${{ github.workspace }}/build
+ run: |
+ gcovr -j $(nproc) --delete --root ../source/ --exclude '\.\./source/test/' --print-summary --xml-pretty --xml coverage.xml .
+
+ - name: Generate coverage on macOS
+ if: runner.os == 'macOS'
+ working-directory: ${{ github.workspace }}/build
+ run: |
+ gcovr -j 2 --delete --root ../source/ --exclude '\.\./source/test/' --print-summary --xml-pretty --xml coverage.xml .
+
+ - name: Run tests & generate coverage on Windows
+ if: runner.os == 'Windows'
+ shell: bash
+ working-directory: ${{ github.workspace }}/build
+ run: |
+ OpenCppCoverage.exe --sources source\\* --excluded_sources source\\test\\* --export_type cobertura:coverage.xml --cover_children -- ctest -V -C $BUILD_TYPE
+
+ - name: Upload coverage to Codecov
+ uses: codecov/codecov-action@v2
+ with:
+ files: ./build/coverage.xml
+ flags: ${{ runner.os }}
+ name: ${{ runner.os }} build
+ fail_ci_if_error: false