1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
name: tests
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
pytest:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- "ubuntu-latest"
python:
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
- "3.14"
include:
- os: macos-15-intel
python: "3.8"
- os: macos-14
python: "3.12"
- os: ubuntu-latest
python: "pypy-3.11"
- os: windows-latest
python: "3.8"
- os: windows-latest
python: "3.11"
- os: windows-latest
python: "3.13"
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up target Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python }}
allow-prereleases: true
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v7
- name: Run tests
run: uv run noxfile.py -s test-${{ matrix.python }}
- name: Run minimum tests
run: uv run noxfile.py -s minimums-${{ matrix.python }}
- name: Send coverage report
uses: codecov/codecov-action@v5
env:
PYTHON: ${{ matrix.python }}
with:
flags: tests
env_vars: PYTHON
name: ${{ matrix.python }}
# https://github.com/marketplace/actions/alls-green#why
required-checks-pass: # This job does nothing and is only used for the branch protection
if: always()
needs:
- pytest
runs-on: ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
|