|
name: Run tests |
|
on: |
|
push: |
|
branches: [main] |
|
pull_request: |
|
create: |
|
|
|
jobs: |
|
test: |
|
strategy: |
|
matrix: |
|
os: |
|
- ubuntu-latest |
|
- ubuntu-24.04-arm |
|
- windows-latest |
|
- windows-11-arm |
|
- macos-15-intel |
|
- macos-latest |
|
py: ["3.15", "3.15t", "3.14", "3.14t", "3.13", "3.12", "3.11", "3.10"] |
|
exclude: |
|
- os: windows-11-arm |
|
py: "3.10" |
|
|
|
runs-on: ${{ matrix.os }} |
|
name: Run test with Python ${{ matrix.py }} on ${{ matrix.os }} |
|
|
|
steps: |
|
- name: Checkout |
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 |
|
|
|
- name: Set up Python |
|
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 |
|
with: |
|
python-version: ${{ matrix.py }} |
|
allow-prereleases: true |
|
cache: "pip" |
|
|
|
- name: Prepare |
|
shell: bash |
|
run: | |
|
python -m pip install -r requirements.txt pytest |
|
|
|
- name: Install pytest-run-parallel under free-threading |
|
if: contains(matrix.py, 't') |
|
run: | |
|
pip install pytest-run-parallel |
|
|
|
- name: Build |
|
shell: bash |
|
run: | |
|
make cython |
|
pip install . |
|
|
|
- name: Test (C extension) |
|
if: ${{ ! contains(matrix.py, 't') }} |
|
shell: bash |
|
run: | |
|
pytest -v test |
|
|
|
- name: Test (pure Python fallback) |
|
if: ${{ ! contains(matrix.py, 't') }} |
|
shell: bash |
|
run: | |
|
MSGPACK_PUREPYTHON=1 pytest -v test |
|
|
|
- name: Test (C extension) in parallel under free-threading |
|
if: contains(matrix.py, 't') |
|
shell: bash |
|
run: | |
|
pytest -v --parallel-threads=auto --iterations=20 test |
|
|
|
- name: Test (pure Python fallback) in parallel under free-threading |
|
if: contains(matrix.py, 't') |
|
shell: bash |
|
run: | |
|
MSGPACK_PUREPYTHON=1 pytest -v --parallel-threads=auto --iterations=20 test |
|
|
|
- name: build packages |
|
shell: bash |
|
run: | |
|
python -m build -nv |
|
|
|
- name: upload packages |
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 |
|
with: |
|
name: dist-${{ matrix.os }}-${{ matrix.py }} |
|
path: dist |