98 lines
3.2 KiB
YAML
98 lines
3.2 KiB
YAML
# The "test" workflow is run on every PR and runs tests across all
|
|
# supported python versions and a range of configurations
|
|
# specified in tox.ini. Also see the "build" workflow which is only
|
|
# run for release branches and covers platforms other than linux-amd64
|
|
# (Platform-specific issues are rare these days so we don't want to
|
|
# take that time on every build).
|
|
|
|
name: Test
|
|
|
|
on: pull_request
|
|
|
|
jobs:
|
|
# Before starting the full build matrix, run one test configuration
|
|
# and the linter (the `black` linter is especially likely to catch
|
|
# first-time contributors).
|
|
test_quick:
|
|
name: Run quick tests
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
name: Install Python
|
|
with:
|
|
# Lint python version must be synced with tox.ini
|
|
python-version: '3.11'
|
|
- name: Install tox
|
|
run: python -m pip install tox -c requirements.txt
|
|
|
|
- name: Run test suite
|
|
run: python -m tox -e py311,lint
|
|
|
|
test_tox:
|
|
name: Run full tests
|
|
needs: test_quick
|
|
runs-on: ubuntu-22.04
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- python: '3.9'
|
|
tox_env: py39-full
|
|
- python: '3.10'
|
|
tox_env: py310-full
|
|
- python: '3.10.8'
|
|
# Early versions of 3.10 and 3.11 had different deprecation
|
|
# warnings in asyncio. Test with them too to make sure everything
|
|
# works the same way.
|
|
tox_env: py310-full
|
|
- python: '3.11'
|
|
tox_env: py311-full
|
|
- python: '3.11.0'
|
|
tox_env: py311-full
|
|
- python: '3.12'
|
|
tox_env: py312-full
|
|
- python: '3.13'
|
|
tox_env: py313-full
|
|
- python: '3.14.0-alpha.1 - 3.14'
|
|
tox_env: py314-full
|
|
- python: 'pypy-3.10'
|
|
# Pypy is a lot slower due to jit warmup costs, so don't run the
|
|
# "full" test config there.
|
|
tox_env: pypy3
|
|
- python: '3.11'
|
|
# Docs python version must be synced with tox.ini
|
|
tox_env: docs
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
name: Install Python
|
|
with:
|
|
python-version: ${{ matrix.python}}
|
|
- name: Install apt packages
|
|
run: sudo apt-get update && sudo apt-get install libcurl4-openssl-dev
|
|
- name: Install tox
|
|
run: python -m pip install tox -c requirements.txt
|
|
|
|
- name: Run test suite
|
|
run: python -m tox -e ${{ matrix.tox_env }}
|
|
|
|
test_win:
|
|
# Windows tests are fairly slow, so only run one configuration here.
|
|
# We test on windows but not mac because even though mac is a more
|
|
# fully-supported platform, it's similar enough to linux that we
|
|
# don't generally need to test it separately. Windows is different
|
|
# enough that we'll break it if we don't test it in CI.
|
|
name: Run windows tests
|
|
needs: test_quick
|
|
runs-on: windows-2022
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
name: Install Python
|
|
with:
|
|
python-version: '3.11'
|
|
- name: Run test suite
|
|
# TODO: figure out what's up with these log messages
|
|
run: py -m tornado.test --fail-if-logs=false
|