Skip to content

added the tests for python and C++ and combined test report into unified test report #564

added the tests for python and C++ and combined test report into unified test report

added the tests for python and C++ and combined test report into unified test report #564

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: Install lcov
run: |
sudo apt-get update
sudo apt-get install -y lcov
- name: Build package
run: |
CXXFLAGS=--coverage CFLAGS=--coverage python scripts/build/install.py
# coverage tests
- name: Run tests
run: |
python -m pytest --doctest-modules --cov=./ --cov-report=xml -s
- name: Capture Coverage Data with lcov
run: |
lcov --capture --directory . --output-file coverage.info --no-external
- name: Generate HTML Coverage Report with genhtml
run: |
genhtml coverage.info --output-directory coverage_report
- 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
test-python-cpp-unified-report:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install Python Dependencies
run: |
python -m pip install --upgrade pip
python -m pip install pytest pytest-cov coverage
- name: Run Python Tests
run: |
pytest pydatastructs/utils/tests/ --cov=src --cov-report xml:coverage-python.xml --cov-report html:coverage-html
- name: Install C++ Dependencies
run: |
sudo apt-get update
sudo apt-get install -y g++ gcov lcov
- name: Compile and Run C++ Tests
run: |
g++ -o tests/test_cpp tests/test.cpp
./tests/test_cpp
lcov --capture --directory . --output-file coverage-cpp.info
- name: Convert C++ Coverage to XML
run: |
python -m pip install gcovr
gcovr -r . --xml-pretty --output coverage-cpp.xml
- name: Combine Coverage Reports
run: |
coverage combine coverage-python.xml coverage-cpp.xml -o unified-reports/combined-coverage.xml
- name: Generate HTML Report
run: |
coverage html -i --data unified-reports/combined-coverage.xml --directory unified-reports/html
- name: Upload Combined Coverage to Codecov
run: bash <(curl -s https://codecov.io/bash) -f unified-reports/combined-coverage.xml
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}