Merge pull request #2029 from zeromq/pre-commit-ci-update-config #1262
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test | |
on: | |
push: | |
branches-ignore: | |
- "dependabot/**" | |
- "pre-commit-ci-update-config" | |
paths-ignore: | |
- "docs/**" | |
- "tools/**" | |
- ".circleci/**" | |
- ".github/workflows/*" | |
- "!.github/workflows/test.yml" | |
pull_request: | |
paths-ignore: | |
- "docs/**" | |
- "tools/**" | |
- ".circleci/**" | |
- ".github/workflows/*" | |
- "!.github/workflows/test.yml" | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
FORCE_COLOR: "1" | |
# only affects Windows, but easiest to set here for now | |
SETUPTOOLS_ENABLE_FEATURES: "legacy-editable" | |
jobs: | |
test: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 20 | |
continue-on-error: ${{ matrix.zmq == 'head' }} | |
env: | |
MACOSX_DEPLOYMENT_TARGET: "11.7" | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- os: macos-13 | |
python: "3.7" | |
- os: macos-14 | |
python: "3.12" | |
zmq: bundled | |
- os: macos-14 | |
python: "3.13" | |
zmq: bundled | |
- os: macos-13 | |
python: pypy-3.9 | |
zmq: bundled | |
- os: ubuntu-20.04 | |
python: "3.7" | |
zmq: bundled | |
tornado: none | |
- os: ubuntu-22.04 | |
python: pypy-3.9 | |
zmq: bundled | |
- os: ubuntu-22.04 | |
python: pypy-3.7 | |
- os: ubuntu-22.04 | |
python: "3.9" | |
tornado: head | |
- os: ubuntu-22.04 | |
python: "3.10" | |
- os: ubuntu-22.04 | |
python: "3.11" | |
- os: ubuntu-22.04 | |
python: "3.8" | |
zmq: head | |
- os: ubuntu-22.04 | |
python: "3.12" | |
- os: ubuntu-22.04 | |
python: "3.13" | |
- os: ubuntu-22.04 | |
python: "3.13" | |
free_threading: free_threading | |
- os: windows-2022 | |
python: "3.7" | |
arch: x86 | |
- os: windows-2022 | |
python: "3.9" | |
arch: x64 | |
- os: windows-2022 | |
python: "3.13" | |
arch: x64 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: setup python | |
uses: actions/setup-python@v5 | |
if: ${{ !matrix.free_threading }} | |
with: | |
python-version: ${{ matrix.python }} | |
architecture: ${{ matrix.arch || 'x64' }} | |
# allows us to use '3.12' and get '-dev' while we wait | |
allow-prereleases: true | |
cache: pip | |
- name: setup python (free threading) | |
if: ${{ matrix.free_threading }} | |
uses: mamba-org/setup-micromamba@v1 | |
with: | |
environment-name: nogil | |
condarc: | | |
channels: | |
- ad-testing/label/py313_nogil | |
- defaults | |
create-args: >- | |
python=${{ matrix.python-version }} | |
pip | |
- name: activate python (free threading) | |
if: ${{ matrix.free_threading }} | |
# light activate, just add env to path | |
# run this in micromamba-shell | |
# so we don't have to for the rest | |
run: | | |
echo $PATH | |
echo "PATH=$PATH" >> "$GITHUB_ENV" | |
echo "PYTHON_GIL=0" >> "$GITHUB_ENV" | |
# need prerelease Cython until 3.1 is out | |
echo "PIP_PRE=1" >> "$GITHUB_ENV" | |
echo "PIP_EXTRA_INDEX_URL=https://pypi.anaconda.org/scientific-python-nightly-wheels/simple" >> "$GITHUB_ENV" | |
shell: micromamba-shell {0} | |
- name: setup coverage | |
if: startsWith(matrix.python, 'pypy') || startsWith(matrix.python, '3.12') | |
run: | | |
grep -v plugins .coveragerc > .coveragerc-save | |
mv .coveragerc-save .coveragerc | |
# - name: enable Cython coverage | |
# if: "! (startsWith(matrix.python, 'pypy') || startsWith(matrix.python, '3.12'))" | |
# run: | | |
# echo "PYZMQ_CYTHON_COVERAGE=1" >> "$GITHUB_ENV" | |
- name: install dependencies | |
run: | | |
pip install --upgrade pip wheel | |
pip install -r test-requirements.txt | |
- name: remove tornado | |
if: matrix.tornado == 'none' | |
run: | | |
pip uninstall -y tornado | |
- name: install tornado-head | |
if: matrix.tornado == 'head' | |
run: | | |
pip install https://github.com/tornadoweb/tornado/archive/HEAD.zip | |
- name: install pinned tornado | |
if: matrix.tornado && matrix.tornado != 'none' && matrix.tornado != 'head' | |
run: | | |
pip install tornado=="${{ matrix.tornado }}" | |
- name: show environment | |
run: | | |
pip freeze | |
- name: install mac dependencies | |
if: startsWith(matrix.os, 'mac') && matrix.zmq != 'bundled' | |
run: | | |
brew install libsodium zeromq | |
- name: install linux dependencies | |
if: startsWith(matrix.os, 'ubuntu') | |
run: | | |
sudo apt-get update | |
sudo apt-get -y remove libzmq5 || true # workaround https://github.com/actions/virtual-environments/issues/3317 | |
sudo apt-get -y install libzmq3-dev libsodium-dev | |
- name: set $ZMQ_PREFIX | |
if: matrix.zmq | |
run: | | |
echo "ZMQ_PREFIX=${{ matrix.zmq }}" >> "$GITHUB_ENV" | |
- name: install libzmq-dev | |
if: matrix.zmq == 'head' | |
run: | | |
wget https://github.com/zeromq/libzmq/archive/HEAD.zip -O libzmq.zip | |
unzip libzmq.zip | |
pushd libzmq-* | |
./autogen.sh | |
./configure --enable-drafts | |
make -j4 | |
sudo make install | |
sudo ldconfig | |
popd | |
echo "ZMQ_PREFIX=/usr/local" >> "$GITHUB_ENV" | |
echo ZMQ_DRAFT_API=1 >> "$GITHUB_ENV" | |
- name: build pyzmq | |
run: | | |
pip install -v -e . | |
- name: import zmq | |
run: | | |
python -I -c "import zmq" | |
- name: run tests | |
run: | | |
pytest --maxfail 2 --cov zmq -m "not wheel and not new_console" -v | |
- name: upload coverage | |
run: codecov | |
# FIXME: what's the right incantation to call this? | |
# the same line from appveyor doesn't work here | |
# - name: run extra windows tests | |
# if: startsWith(matrix.os, 'win') | |
# run: | | |
# cmd /c start /wait test pytest -vsx -m new_console --pyargs zmq.tests --junit-xml=./results.xml | |
# python tools/check_junit_result.py ./results.xml |