-
-
Notifications
You must be signed in to change notification settings - Fork 1k
132 lines (129 loc) · 4.23 KB
/
check.yml
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
name: check
on:
push:
tags-ignore: ["**"]
pull_request:
schedule:
- cron: "0 8 * * *"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
name: test ${{ matrix.py }} - ${{ matrix.os }}
if: github.event_name != 'schedule' || github.repository_owner == 'pypa'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
py:
- "3.12.0-rc.2"
- "3.11"
- "3.10"
- "3.9"
- "3.8"
- "3.7"
- pypy-3.10
- pypy-3.9
- pypy-3.8
- pypy-3.7
os:
- ubuntu-latest
- macos-latest
- windows-latest
include:
- { os: macos-latest, py: "brew@3.11" }
- { os: macos-latest, py: "brew@3.10" }
- { os: macos-latest, py: "brew@3.9" }
- { os: macos-latest, py: "brew@3.8" }
steps:
- uses: taiki-e/install-action@cargo-binstall
- name: Install OS dependencies
run: |
set -x
for i in 1 2 3; do
echo "try $i" && \
${{ runner.os == 'Linux' && 'sudo apt-get update -y && sudo apt-get install snapd fish csh -y' || true }} && \
${{ runner.os == 'Linux' && 'cargo binstall -y nu' || true }} && \
${{ runner.os == 'macOS' && 'brew install fish tcsh nushell' || true }} && \
${{ runner.os == 'Windows' && 'choco install nushell' || true }} && \
exit 0 || true;
sleep 1
done
exit 1
shell: bash
- name: Setup python for tox
uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Setup brew python for test ${{ matrix.py }}
if: startsWith(matrix.py,'brew@')
run: |
set -e
PY=$(echo '${{ matrix.py }}' | cut -c 6-)
brew cleanup && brew upgrade python@$PY || brew install python@$PY
echo "/usr/local/opt/python@$PY/libexec/bin" >>"${GITHUB_PATH}"
shell: bash
- name: Install tox
run: python -m pip install tox pip -U
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use local virtualenv for tox
run: python -m pip install .
- name: Setup python for test ${{ matrix.py }}
if: "!( startsWith(matrix.py,'brew@') || endsWith(matrix.py, '-dev') )"
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.py }}
- name: Pick environment to run
run: |
import os; import platform; import sys; from pathlib import Path
env = f'TOXENV=py{"" if platform.python_implementation() == "CPython" else "py"}3{sys.version_info.minor}'
print(f"Picked: {env} for {sys.version} based of {sys.executable}")
with Path(os.environ["GITHUB_ENV"]).open("ta") as file_handler:
file_handler.write(env)
shell: python
- name: Setup test suite
run: tox -vv --notest --skip-missing-interpreters false
- name: Run test suite
run: tox --skip-pkg-install
env:
PYTEST_ADDOPTS: "-vv --durations=20"
CI_RUN: "yes"
DIFF_AGAINST: HEAD
check:
name: ${{ matrix.tox_env }} - ${{ matrix.os }}
if: github.event_name != 'schedule' || github.repository_owner == 'pypa'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
tox_env:
- dev
- docs
- readme
- upgrade
- zipapp
exclude:
- { os: windows-latest, tox_env: readme }
- { os: windows-latest, tox_env: docs }
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Python "3.11"
uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install tox
run: python -m pip install tox
- name: Setup check
run: python -m tox --skip-missing-interpreters false -e ${{ matrix.tox_env }} --notest
- name: Run check for ${{ matrix.tox_env }}
run: python -m tox --skip-pkg-install -e ${{ matrix.tox_env }}
env:
UPGRADE_ADVISORY: "yes"