Skip to content

Update CI workflow for C++ coverage generation and testing #552

Update CI workflow for C++ coverage generation and testing

Update CI workflow for C++ coverage generation and testing #552

Workflow file for this run

name: build
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test-ubuntu-py38:
runs-on: ${{matrix.os}}
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version:
- "3.8"
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Upgrade pip version
run: |
python -m pip install --upgrade pip
- name: Install requirements
run: |
pip install -r requirements.txt
pip install -r docs/requirements.txt
- name: Build package
run: |
CXXFLAGS=--coverage CFLAGS=--coverage python scripts/build/install.py
- name: Run C++ Tests
run: |
cd build
./test_binary
# Capture and Generating Coverage Report with lcov
- name: Capture Coverage Data with lcov
run: |
cd build
lcov --capture --directory . --output-file coverage.info
- name: Generate HTML Coverage Report with genhtml
run: |
cd build
genhtml coverage.info --output-directory coverage_report
- name: Run tests
run: |
python -m pytest --doctest-modules --cov=./ --cov-report=xml -s
- name: Upload Coverage
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
directory: ./coverage/reports/
env_vars: OS,PYTHON
fail_ci_if_error: false
files: ./coverage.xml
flags: unittests
name: codecov-umbrella
path_to_write_report: ./coverage/codecov_report.txt
verbose: true
- name: Build Documentation
run: |
sphinx-build -b html docs/source/ docs/build/html
test-ubuntu-py39-py310:
runs-on: ${{matrix.os}}
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version:
- "3.9"
- "3.10"
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Upgrade pip version
run: |
python -m pip install --upgrade pip
- name: Install requirements
run: |
pip install -r requirements.txt
pip install -r docs/requirements.txt
- name: Build package
run: |
python scripts/build/install.py
- name: Run tests
run: |
python -c "import pydatastructs; pydatastructs.test(only_benchmarks=True)"
- name: Build Documentation
run: |
sphinx-build -b html docs/source/ docs/build/html
test-macos:
runs-on: ${{matrix.os}}
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
os: [macos-latest]
python-version:
- "3.8"
- "3.9"
- "3.10"
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Upgrade pip version
run: |
python -m pip install --upgrade pip
- name: Install requirements
run: |
pip install -r requirements.txt
pip install -r docs/requirements.txt
- name: Build package
run: |
python scripts/build/install.py
- name: Run tests
run: |
python -c "import pydatastructs; pydatastructs.test()"
- name: Build Documentation
run: |
sphinx-build -b html docs/source/ docs/build/html
test-windows:
runs-on: ${{matrix.os}}
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
os: [windows-latest]
python-version:
- "3.8"
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Setup conda
uses: s-weigand/setup-conda@v1
with:
update-conda: true
python-version: ${{ matrix.python-version }}
conda-channels: anaconda, conda-forge
- run: conda --version
- run: which python
- name: Upgrade pip version
run: |
python -m pip install --upgrade pip
- name: Install requirements
run: |
pip install -r requirements.txt
pip install -r docs/requirements.txt
- name: Build package
run: |
python scripts/build/install.py
- name: Run tests
run: |
python -c "import pydatastructs; pydatastructs.test()"
- name: Build Documentation
run: |
sphinx-build -b html docs/source/ docs/build/html