summaryrefslogtreecommitdiff
path: root/.github/workflows/python-nightly.yml
blob: 319064c9405dea8040fcf5c40a232d1023b6cd6a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# 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