diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8fe0ce6..4c411fa 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -47,3 +47,50 @@ jobs: run: | pytest -v + coverage: + name: 'Test coverage' + runs-on: ubuntu-latest + steps: + - name: Checkout source + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Create micromamba environment + uses: mamba-org/setup-micromamba@main + with: + environment-file: dev-environment.yml + cache-environment: true + create-args: lcov + + - name: Configure CMake + run: | + cmake -Bbuild -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS_DEBUG="-g -O0 --coverage" + + - name: Build with CMake + working-directory: build + run: cmake --build . --parallel 8 + + - name: Run tests + run: | + pytest -v + + - name: Collect C++ coverage + run: | + lcov --version + lcov --output-file coverage.lcov --directory . --capture + lcov --output-file coverage.lcov --extract coverage.lcov '*/git2cpp/src/*' + genhtml coverage.lcov --output-directory outdir + + - name: Upload artifact containing coverage report + uses: actions/upload-artifact@v6 + with: + name: coverage_report + path: outdir + + #- name: Upload coverage to codecov + # uses: codecov/codecov-action@v5 + # with: + # files: coverage.lcov + # token: ${{ secrets.CODECOV_TOKEN }} + # verbose: true