Skip to content

Save CI resources + document why each version is covered #422

Save CI resources + document why each version is covered

Save CI resources + document why each version is covered #422

Workflow file for this run

name: Test
on:
push:
branches:
- master
pull_request:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# NOTE: The idea here is:
# - Cover both CPython and PyPy3
# - Cover both the oldest and most recent version supported
# - Cover switch "<3.10" on both sides at the edge, i.e. cover
# both 3.9 (for "<"/true) and 3.10 (for ">="/false)
# since we have a switch like that
# (see `install_requires` in `setup.py` for details)
# That allows us to save resources on:
# - CPython 3.11
python-version: ["3.8", "3.9", "3.10", "3.12", "pypy-3.8", "pypy-3.10"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install project dependencies
run: |
pip3 install --upgrade pip
pip3 install codecov tox tox-gh-actions
- name: Run online tests with tox
run: tox -- -m online
- name: Run offline tests with tox with no access to the Internet
run: |
# We're using unshare to take Internet access
# away from tox so that we'll notice whenever some new test
# is missing @pytest.mark.online decoration in the future
unshare --map-root-user --net -- \
sh -c 'ip link set lo up; tox -- -m "not online"'
- name: Run coverage
run: codecov