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@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Set up Python uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.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