# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 # For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt name: "Tests" on: push: branches: - master pull_request: workflow_dispatch: defaults: run: shell: bash jobs: tests: name: "Python ${{ matrix.python-version }} on ${{ matrix.os }}" runs-on: "${{ matrix.os }}" strategy: matrix: os: - ubuntu-latest - macos-latest - windows-latest python-version: # When changing this list, be sure to check the [gh-actions] list in # tox.ini so that tox will run properly. - "2.7" - "3.5" - "3.6" - "3.7" - "3.8" - "3.9" - "3.10.0-alpha.6" - "pypy3" exclude: # Windows PyPy doesn't seem to work? - os: windows-latest python-version: "pypy3" fail-fast: false steps: - name: "Check out the repo" uses: "actions/checkout@v2" - name: "Set up Python" uses: "actions/setup-python@v2" with: python-version: "${{ matrix.python-version }}" - name: "Install Visual C++ if needed" if: runner.os == 'Windows' && matrix.python-version == '2.7' run: | choco install vcpython27 -f -y - name: "Install dependencies" run: | set -xe python -VV python -m site # Need to install setuptools first so that ci.pip will succeed. python -m pip install -c requirements/pins.pip setuptools wheel python -m pip install -r requirements/ci.pip python -m pip install -c requirements/pins.pip tox-gh-actions - name: "Run tox for ${{ matrix.python-version }}" continue-on-error: true id: tox1 run: | python -m tox -- -rfeXs - name: "Retry tox for ${{ matrix.python-version }}" id: tox2 if: steps.tox1.outcome == 'failure' run: | python -m tox -- -rfeXs - name: "Set status" if: always() run: | if ${{ steps.tox1.outcome != 'success' && steps.tox2.outcome != 'success' }}; then exit 1 fi