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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
name: Test
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
env:
# turns off tox's output redirection so we can debug package installation
TOX_OPTIONS: -vv
jobs:
lint:
runs-on: ubuntu-latest
# https://github.community/t/github-actions-does-not-respect-skip-ci/17325/8
if: "! contains(toJSON(github.event.commits.*.message), '[skip ci]')"
steps:
- uses: actions/checkout@v6
- name: Set up Python 3.x
uses: actions/setup-python@v6
with:
python-version: "3.x"
- name: Install packages
run: pip install tox
- name: Run Tox
run: tox $TOX_OPTIONS -e lint,package_readme
test:
runs-on: ${{ matrix.platform }}
if: "! contains(toJSON(github.event.commits.*.message), '[skip ci]')"
strategy:
fail-fast: false
matrix:
# Oldest supported, 'Stable' supported, Newest supported
python-version: ["3.10", "3.12", "3.13", "3.14"]
platform: [ubuntu-latest]
include: # Only test on the latest supported stable Python on macOS and Windows.
- platform: macos-latest
python-version: 3.14
- platform: windows-latest
python-version: 3.14
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Install packages
run: pip install tox coverage
- name: Run Tox
run: tox $TOX_OPTIONS -e py-cov
- name: Run Tox without extra dependencies
run: tox $TOX_OPTIONS -e py-cov-noextra
- name: Produce coverage files
run: |
coverage combine
coverage xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
file: coverage.xml
flags: unittests
name: codecov-umbrella
# TODO(anthrotype): Set fail_ci_if_error: true if/when Codecov becomes less flaky
fail_ci_if_error: false
# see https://github.com/codecov/codecov-action/issues/557
token: ${{ secrets.CODECOV_TOKEN }}
test-cython:
runs-on: ${{ matrix.platform }}
if: "! contains(toJSON(github.event.commits.*.message), '[skip ci]')"
strategy:
fail-fast: false
matrix:
platform: [ubuntu-latest, macos-latest]
python-version: ["3.14"]
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install packages
run: pip install tox
- name: Run Tox
run: tox $TOX_OPTIONS -e py-cy
test-pypy3:
runs-on: ubuntu-latest
if: "! contains(toJSON(github.event.commits.*.message), '[skip ci]')"
steps:
- uses: actions/checkout@v6
- name: Set up Python pypy3
uses: actions/setup-python@v6
with:
python-version: "pypy-3.11"
- name: Install packages
run: pip install tox
- name: Run Tox
run: tox $TOX_OPTIONS -e pypy3
|