Skip to content

Unified tests

Unified tests #561

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-c++-unified-report:

Check failure on line 204 in .github/workflows/ci.yml

View workflow run for this annotation

GitHub Actions / build

Invalid workflow file

The workflow is not valid. .github/workflows/ci.yml (Line: 204, Col: 1): Unexpected value 'test-python-c++-unified-report'
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
# Step 1: Checkout Repository
- name: Checkout Repository
uses: actions/checkout@v4
# Step 2: Set up Python
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
# Step 3: Install Python Dependencies
- name: Install Python Dependencies
run: |
python -m pip install --upgrade pip
python -m pip install pytest pytest-cov cobertura-merge
# Step 4: Run Python Tests and Generate Coverage
- name: Run Python Tests
run: |
pytest tests/ --cov=src --cov-report xml:coverage-python.xml --cov-report html:coverage-html
# Step 5: Install C++ Dependencies
- name: Install C++ Dependencies
run: |
sudo apt-get update
sudo apt-get install -y g++ gcov lcov
# Step 6: Compile and Run C++ Tests
- 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
# Step 7: Convert C++ Coverage to XML (Using `gcovr`)
- name: Convert C++ Coverage to XML
run: |
python -m pip install gcovr
gcovr -r . --xml-pretty --output coverage-cpp.xml
# Step 8: Combine Coverage Reports
- name: Combine Coverage Reports
run: |
python -m cobertura_merge coverage-python.xml coverage-cpp.xml -o unified-reports/combined-coverage.xml
# Step 9: Generate HTML Report from Combined Coverage
- name: Generate HTML Report
run: |
python -m pip install coverage html-report
coverage html -i --data unified-reports/combined-coverage.xml --directory unified-reports/html
# Step 10: Upload Combined Coverage to Codecov
- 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 }}