name: Test on: push: pull_request: workflow_dispatch: jobs: build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "pypy-3.8", "pypy-3.9", "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