name: Test on: push: branches: - master 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" urllib3-requirement: - "urllib3>=2" - "urllib3<2" exclude: - python-version: "3.8" urllib3-requirement: "urllib3>=2" - python-version: "pypy-3.8" urllib3-requirement: "urllib3>=2" - python-version: "3.9" urllib3-requirement: "urllib3>=2" - python-version: "pypy-3.9" urllib3-requirement: "urllib3>=2" - python-version: "pypy-3.10" urllib3-requirement: "urllib3>=2" steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: pip - name: Install project dependencies run: | pip install --upgrade pip setuptools pip install codecov '.[tests]' '${{ matrix.urllib3-requirement }}' pip check - name: Run online tests run: ./runtests.sh --cov=./vcr --cov-branch --cov-report=xml --cov-append -m online - name: Run offline tests with no access to the Internet run: | # We're using unshare to take Internet access # away 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; ./runtests.sh --cov=./vcr --cov-branch --cov-report=xml --cov-append -m "not online"' - name: Run coverage run: codecov