Skip to content

Initial start on cpython interface testing #37

Initial start on cpython interface testing

Initial start on cpython interface testing #37

Workflow file for this run

name: CI
on:
pull_request:
push:
branches:
- main
jobs:
test:
name: Test
runs-on: ${{ matrix.os }}
strategy:
matrix:
# Use macos-13 because pip binary packages for ARM aren't
# available for many dependencies
os: [macos-13, macos-14, ubuntu-latest]
python-version: ["3.9", "3.10", "3.11"]
exclude:
# Just run macos tests on one Python version
- os: macos-13
python-version: "3.10"
- os: macos-13
python-version: "3.11"
- os: macos-14
python-version: "3.9"
- os: macos-14
python-version: "3.10"
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install '.[dev]'
# Build the extension module in-place so pytest can find it
python3 setup.py build_ext --inplace
- name: Run tests
run: |
pytest
packaging:
name: Packaging
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install build twine validate-pyproject[all]
- name: Check and install package
run: |
validate-pyproject pyproject.toml
python -m build
python -m twine check --strict dist/*
python -m pip install dist/*.whl
- name: Check vcztools CLI
run: |
vcztools --help
# Make sure we don't have ``vcztools`` in the CWD
cd tests
python -m vcztools --help
c_python_test:
name: CPython interface tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install '.[dev]'
# Build the extension module in-place so pytest can find it
export CFLAGS="--coverage" python3 setup.py build_ext --inplace
- name: Run tests
run: |
pytest -vs tests/test_cpython_interface.py
- name: Show coverage
run: |
gcovr --filter vcztools
c_test:
name: C tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt install -y ninja-build libcunit1-dev valgrind meson gcovr
- name: Build
working-directory: ./lib
run: |
meson setup -Db_coverage=true build
- name: Tests
working-directory: ./lib
run: |
ninja -C build test
- name: Show coverage
working-directory: ./lib
run: |
ninja -C build coverage-text
cat build/meson-logs/coverage.txt
- name: Valgrind
working-directory: ./lib
run: |
valgrind --leak-check=full --error-exitcode=1 ./build/tests