|
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@v7 |
|
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@v7 |
|
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<2 |
|
|
|
- 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@v7 |
|
with: |
|
files: coverage.lcov |
|
token: ${{ secrets.CODECOV_TOKEN }} |
|
verbose: true |