# 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