Skip to content

πŸ§ͺ check

πŸ§ͺ check #1631

Workflow file for this run

name: πŸ§ͺ check
on:
workflow_dispatch:
push:
branches: ["main"]
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 }}
timeout-minutes: 40
permissions:
contents: read
strategy:
fail-fast: false
matrix:
py:
- "3.14t"
- "3.14"
- "3.13t"
- "3.13"
- "3.12"
- "3.11"
- "3.10"
- "3.9"
- "3.8"
- pypy-3.11
- pypy-3.10
- pypy-3.9
- pypy-3.8
- graalpy-24.1
- rp
os:
- ubuntu-24.04
- macos-15
- windows-2025
include:
- { os: macos-15, py: "brew@3.14" }
- { os: macos-15, py: "brew@3.13" }
- { os: macos-15, py: "brew@3.12" }
- { os: macos-15, py: "brew@3.11" }
- { os: macos-15, py: "brew@3.10" }
- { os: macos-15, py: "brew@3.9" }
exclude:
- { os: windows-2025, py: "graalpy-24.1" }
- { os: windows-2025, py: "pypy-3.10" }
- { os: windows-2025, py: "pypy-3.9" }
- { os: windows-2025, py: "pypy-3.8" }
steps:
- name: πŸš€ Install uv
uses: astral-sh/setup-uv@v7
- name: πŸ“₯ Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: 🏷️ Fetch upstream tags for versioning
shell: bash
run: |
git fetch --force --tags https://github.com/pypa/virtualenv.git
- name: 🐍 Setup Python for tox
uses: actions/setup-python@v6
with:
python-version: "3.14"
- name: πŸ“¦ Install tox with this virtualenv
shell: bash
run: |
if [[ "${{ matrix.py }}" == "3.13t" || "${{ matrix.py }}" == "3.14t" || "${{ matrix.py }}" == "rp" ]]; then
uv tool install --no-managed-python --python 3.14 "tox>=4.45" --with .
else
uv tool install --no-managed-python --python 3.14 "tox>=4.45" --with tox-uv --with .
fi
- name: 🐍 Setup Python for test ${{ matrix.py }}
uses: actions/setup-python@v6
if: ${{ !startsWith(matrix.py, 'brew@') && matrix.py != 'rp' }}
with:
python-version: ${{ matrix.py }}
- name: πŸ¦€ Setup RustPython
if: matrix.py == 'rp'
shell: bash
env:
GH_TOKEN: ${{ github.token }}
run: |
tag=$(gh release list --repo RustPython/RustPython --limit 1 --json tagName -q '.[0].tagName')
if [ "${{ runner.os }}" = "Linux" ]; then
asset="rustpython-release-Linux-x86_64-unknown-linux-gnu"
elif [ "${{ runner.os }}" = "macOS" ]; then
asset="rustpython-release-macOS-aarch64-apple-darwin"
elif [ "${{ runner.os }}" = "Windows" ]; then
asset="rustpython-release-Windows-x86_64-pc-windows-msvc.exe"
fi
gh release download "$tag" --repo RustPython/RustPython --pattern "$asset" --dir "$RUNNER_TEMP"
if [ "${{ runner.os }}" = "Windows" ]; then
cp "$RUNNER_TEMP/$asset" "/c/ProgramData/chocolatey/bin/rustpython.exe"
else
chmod +x "$RUNNER_TEMP/$asset"
sudo mv "$RUNNER_TEMP/$asset" /usr/local/bin/rustpython
fi
- name: πŸ› οΈ Install OS dependencies
shell: bash
env:
GH_TOKEN: ${{ github.token }}
run: |
if [ "${{ runner.os }}" = "Linux" ]; then
sudo apt-get install -y software-properties-common
sudo apt-add-repository ppa:fish-shell/release-4 -y
curl -fsSL https://apt.fury.io/nushell/gpg.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/fury-nushell.gpg
echo "deb https://apt.fury.io/nushell/ /" | sudo tee /etc/apt/sources.list.d/fury.list
sudo apt-get update -y
sudo apt-get install snapd fish csh nushell -y
elif [ "${{ runner.os }}" = "macOS" ]; then
brew update
if [[ "${{ matrix.py }}" == brew@* ]]; then
PY=$(echo '${{ matrix.py }}' | cut -c 6-)
brew install python@$PY || brew upgrade python@$PY
echo "/usr/local/opt/python@$PY/libexec/bin" >>"${GITHUB_PATH}"
fi
brew install fish tcsh nushell || brew upgrade fish tcsh nushell
elif [ "${{ runner.os }}" = "Windows" ]; then
nu_version=$(gh release view --repo nushell/nushell --json tagName -q .tagName)
gh release download "$nu_version" --repo nushell/nushell --pattern "*-x86_64-pc-windows-msvc.zip" --dir "$RUNNER_TEMP"
7z x "$RUNNER_TEMP/nu-${nu_version#v}-x86_64-pc-windows-msvc.zip" -o"$RUNNER_TEMP/nushell" -y
cp "$RUNNER_TEMP/nushell/nu.exe" "/c/ProgramData/chocolatey/bin/nu.exe"
fi
- name: 🧬 Pick environment to run
shell: bash
run: |
py="${{ matrix.py }}"
if [[ "$py" == brew@* ]]; then
brew_version="${py#brew@}"
echo "UV_PYTHON=/opt/homebrew/bin/python${brew_version}" >> "$GITHUB_ENV"
py="$brew_version"
fi
[[ "$py" == graalpy-* ]] && py="graalpy"
echo "TOXENV=$py" >> "$GITHUB_ENV"
echo "Set TOXENV=$py"
- name: πŸ—οΈ Setup test suite
run: tox run -vvvv --notest --skip-missing-interpreters false
- name: πŸƒ Run test suite
run: tox run --skip-pkg-install
timeout-minutes: 30
env:
PYTEST_ADDOPTS: "-vv --durations=20"
CI_RUN: "yes"
DIFF_AGAINST: HEAD
check:
name: πŸ”Ž check ${{ matrix.tox_env }} - ${{ matrix.os }}
if: github.event_name != 'schedule' || github.repository_owner == 'pypa'
runs-on: ${{ matrix.os }}
permissions:
contents: read
strategy:
fail-fast: false
matrix:
os:
- ubuntu-24.04
- windows-2025
tox_env:
- dev
- docs
- readme
- type
- type-3.8
- upgrade
- zipapp
exclude:
- { os: windows-2025, tox_env: docs }
- { os: windows-2025, tox_env: readme }
- { os: windows-2025, tox_env: type }
- { os: windows-2025, tox_env: type-3.8 }
steps:
- name: πŸš€ Install uv
uses: astral-sh/setup-uv@v7
- name: πŸ“¦ Install tox
run: uv tool install --python-preference only-managed --python 3.14 "tox>=4.45" --with tox-uv
- name: πŸ“₯ Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: 🏷️ Fetch upstream tags for versioning
shell: bash
run: |
git fetch --force --tags https://github.com/pypa/virtualenv.git
- name: πŸ—οΈ Setup check suite
run: tox run -vv --notest --skip-missing-interpreters false -e ${{ matrix.tox_env }}
- name: πŸƒ Run check for ${{ matrix.tox_env }}
run: tox run --skip-pkg-install -e ${{ matrix.tox_env }}