name: Test on: pull_request: branches: - main push: branches: - main workflow_dispatch: defaults: run: shell: bash -leo pipefail {0} jobs: test: name: 'Build and test' runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest] steps: - name: Checkout source uses: actions/checkout@v6 with: fetch-depth: 0 - name: Create micromamba environment uses: mamba-org/setup-micromamba@main with: environment-file: dev-environment.yml cache-environment: true - name: Configure CMake run: | cmake -Bbuild -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX - name: Build with CMake working-directory: build run: cmake --build . --parallel 8 - name: Smoke test working-directory: build run: | ls -l git2cpp ./git2cpp -v - name: Run tests env: GIT2CPP_TEST_PRIVATE_TOKEN: ${{ secrets.GIT2CPP_TEST_PRIVATE_TOKEN }} run: | pytest -v coverage: name: 'Test coverage' runs-on: ubuntu-latest steps: - name: Checkout source uses: actions/checkout@v6 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 env: GIT2CPP_TEST_PRIVATE_TOKEN: ${{ secrets.GIT2CPP_TEST_PRIVATE_TOKEN }} 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@v7 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