# 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: "Python Nightly Tests" on: push: branches: - "**/*nightly*" schedule: # Run at 2:22am early every morning Eastern time (6/7:22 UTC) # so that we get tips of CPython development tested. # https://crontab.guru/#22_7_%2a_%2a_%2a - cron: "22 7 * * *" workflow_dispatch: defaults: run: shell: bash env: PIP_DISABLE_PIP_VERSION_CHECK: 1 COVERAGE_IGOR_VERBOSE: 1 permissions: contents: read concurrency: group: "${{ github.workflow }}-${{ github.ref }}" cancel-in-progress: true jobs: tests: name: "${{ matrix.python-version }}" # Choose a recent Ubuntu that deadsnakes still builds all the versions for. # For example, deadsnakes doesn't provide 3.10 nightly for 22.04 (jammy) # because jammy ships 3.10, and deadsnakes doesn't want to clobber it. # https://launchpad.net/~deadsnakes/+archive/ubuntu/nightly/+packages # https://github.com/deadsnakes/issues/issues/234 runs-on: ubuntu-20.04 strategy: matrix: python-version: # When changing this list, be sure to check the [gh] list in # tox.ini so that tox will run properly. PYVERSIONS # Available versions: # https://launchpad.net/~deadsnakes/+archive/ubuntu/nightly/+packages - "3.10-dev" - "3.11-dev" - "3.12-dev" # https://github.com/actions/setup-python#available-versions-of-pypy - "pypy-3.7-nightly" - "pypy-3.8-nightly" - "pypy-3.9-nightly" - "pypy-3.10-nightly" fail-fast: false steps: - name: "Check out the repo" uses: "actions/checkout@v3" - name: "Install ${{ matrix.python-version }} with deadsnakes" uses: deadsnakes/action@e3117c2981fd8afe4af79f3e1be80066c82b70f5 if: "!startsWith(matrix.python-version, 'pypy-')" with: python-version: "${{ matrix.python-version }}" - name: "Install ${{ matrix.python-version }} with setup-python" uses: "actions/setup-python@v4" if: "startsWith(matrix.python-version, 'pypy-')" with: python-version: "${{ matrix.python-version }}" - name: "Show diagnostic info" run: | set -xe python -VV python -m site python -m coverage debug sys python -m coverage debug pybehave - name: "Install dependencies" run: | python -m pip install -r requirements/tox.pip - name: "Run tox" run: | python -m tox -- -rfsEX