Skip to content

Coverage

Coverage #296

Workflow file for this run

# This workflow builds and tests svZeroDSolver. The Python version is tested on
# ubuntu and the C++ version is built and tested on different versions of
# ubuntu and macOS.
name: Build and test
on: [push, pull_request]
jobs:
cpp:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-20.04, ubuntu-22.04, macos-11, macos-12]
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: Install ubuntu dependencies
if: startsWith(matrix.os, 'ubuntu')
run: sudo apt update && sudo apt install build-essential cmake lcov
- name: Install svZeroDPlus
run: |
conda create -n zerod python=3.11.4
conda run -n zerod pip install pytest pytest-cov pytest-mock
conda run -n zerod pip install -e .
- name: Test the build
run: |
conda run -n zerod pytest tests/test_integration_cpp.py -v --durations=0
- name: Build using CMake
run: |
mkdir Release
cd Release
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
- name: Test interface
run: |
cd tests/test_interface
mkdir build_tests
cd build_tests
cmake ../
make
cd test_01
./svZeroD_interface_test01 ../../../../Release ../../test_01/svzerod_3Dcoupling.json
cd ../test_02
./svZeroD_interface_test02 ../../../../Release ../../test_02/svzerod_tuned.json
- name: Generate code coverage
if: startsWith(matrix.os, 'ubuntu-22.04')
run: |
cd Release
cmake -DENABLE_COVERAGE=ON ..
cmake --build .
cd ../tests
conda run -n zerod pytest test_integration_cpp.py -v --durations=0 --coverage
cd ../Release
make coverage
- name: Save coverage report
if: startsWith(matrix.os, 'ubuntu-22.04')
uses: actions/upload-artifact@v3
with:
name: coverage_report
path: Release/coverage
python:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up environment
uses: actions/setup-python@v3
with:
python-version: 3.9
- name: Install dependencies
run: |
conda create -n zerod python=3.9
conda run -n zerod pip install pytest pytest-cov pytest-mock
conda run -n zerod pip install -e .
- name: Run pytest
run: |
conda run -n zerod pytest tests/test_integration.py
- name: Save coverage report
uses: actions/upload-artifact@v3
with:
name: coverage_report
path: htmlcov