Skip to content

Update Test Dependencies #1170

Update Test Dependencies

Update Test Dependencies #1170

Workflow file for this run

name: Tests
on:
release:
types: [ published ]
pull_request:
push:
env:
PY_COLORS: "1"
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
env: [
"py39",
"py310",
"py311",
"py312",
"py313",
"py314",
# "py313t",
# "py314t",
"pypy310",
"pypy311",
]
fail-fast: false
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Install tox
run: uv tool install tox --with tox-uv
- name: Setup SocketCAN
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
sudo apt-get update
sudo apt-get -y install linux-modules-extra-$(uname -r)
sudo ./test/open_vcan.sh
- name: Test with pytest via tox
run: |
tox -e ${{ matrix.env }}
env:
# SocketCAN tests currently fail with PyPy because it does not support raw CAN sockets
# See: https://foss.heptapod.net/pypy/pypy/-/issues/3809
TEST_SOCKETCAN: "${{ matrix.os == 'ubuntu-latest' && ! startsWith(matrix.env, 'pypy' ) }}"
- name: Coveralls Parallel
uses: coverallsapp/github-action@v2
with:
github-token: ${{ secrets.github_token }}
flag-name: Unittests-${{ matrix.os }}-${{ matrix.python-version }}
parallel: true
path-to-lcov: ./coverage.lcov
coveralls:
needs: test
runs-on: ubuntu-latest
steps:
- name: Coveralls Finished
uses: coverallsapp/github-action@v2
with:
github-token: ${{ secrets.github_token }}
parallel-finished: true
static-code-analysis:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Install tox
run: uv tool install tox --with tox-uv
- name: Run linters
run: |
tox -e lint
- name: Run type checker
run: |
tox -e type
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Install tox
run: uv tool install tox --with tox-uv
- name: Build documentation
run: |
tox -e docs
build:
name: Packaging
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # fetch tags for setuptools-scm
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Build wheel and sdist
run: uvx --from build pyproject-build --installer uv
- name: Check build artifacts
run: uvx twine check --strict dist/*
- name: Save artifacts
uses: actions/upload-artifact@v4
with:
name: release
path: ./dist
upload_pypi:
needs: [build]
name: Release to PyPi
runs-on: ubuntu-latest
permissions:
id-token: write
attestations: write
# upload to PyPI only on release
if: github.event.release && github.event.action == 'published'
steps:
- uses: actions/download-artifact@v4
with:
path: dist
merge-multiple: true
- name: Publish release distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1