From b2c3368202e3d6d3b244783f5e61c427bc729526 Mon Sep 17 00:00:00 2001 From: masklinn Date: Sat, 5 Oct 2024 17:08:27 +0200 Subject: [PATCH] test all --- .github/workflows/pyo3-wheels.yml | 130 +++++++++++++++++++++++------- .github/workflows/pytests.yaml | 52 ------------ 2 files changed, 101 insertions(+), 81 deletions(-) delete mode 100644 .github/workflows/pytests.yaml diff --git a/.github/workflows/pyo3-wheels.yml b/.github/workflows/pyo3-wheels.yml index 3da2efd..1ccc35d 100644 --- a/.github/workflows/pyo3-wheels.yml +++ b/.github/workflows/pyo3-wheels.yml @@ -3,15 +3,12 @@ # # maturin generate-ci --zig github # -name: build wheels +name: Wheels and Tests on: push: - branches: - - main - - master - tags: - - '*' + branches: [ main ] + tags: [ "*" ] pull_request: workflow_dispatch: @@ -31,11 +28,11 @@ jobs: - "3.x" - "pypy-3.10" - "graalpy-24" - platform: - - target: x86_64 - #- target: x86 - - target: aarch64 - #- target: armv7 + arch: + - x86_64 + #- x86 + - aarch64 + #- armv7 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 @@ -44,14 +41,14 @@ jobs: - name: Build wheels uses: PyO3/maturin-action@v1 with: - target: ${{ matrix.platform.target }} + target: ${{ matrix.arch }} args: ${{ env.COMMON }} --zig sccache: 'true' manylinux: auto - name: Upload wheels uses: actions/upload-artifact@v4 with: - name: wheels-linux-${{ matrix.platform.target }}-${{ matrix.python-version }} + name: wheels-linux-${{ matrix.arch }}-${{ matrix.python-version }} path: dist/* musllinux: @@ -62,11 +59,11 @@ jobs: - "3.x" - "pypy-3.10" - "graalpy-24" - platform: - - target: x86_64 - # - target: x86 - - target: aarch64 - #- target: armv7 + arch: + - x86_64 + # - x86 + - aarch64 + #- armv7 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 @@ -75,14 +72,14 @@ jobs: - name: Build wheels uses: PyO3/maturin-action@v1 with: - target: ${{ matrix.platform.target }} + target: ${{ matrix.arch }} args: ${{ env.BASE }} --release sccache: 'true' manylinux: musllinux_1_2 - name: Upload wheels uses: actions/upload-artifact@v4 with: - name: wheels-musllinux-${{ matrix.platform.target }}-${{ matrix.python-version }} + name: wheels-musllinux-${{ matrix.arch }}-${{ matrix.python-version }} path: dist/* windows: @@ -95,8 +92,8 @@ jobs: # if enabled, fails with "GraalPy version 24 with arch x64 # not found" despite graal having windows artefacts #- "graalpy-24" - platform: - - target: x64 + arch: + - x86_64 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 @@ -105,13 +102,13 @@ jobs: - name: Build wheels uses: PyO3/maturin-action@v1 with: - target: ${{ matrix.platform.target }} + target: ${{ matrix.arch }} args: ${{ env.COMMON }} sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v4 with: - name: wheels-windows-${{ matrix.platform.target }}-${{ matrix.python-version }} + name: wheels-windows-${{ matrix.arch }}-${{ matrix.python-version }} path: dist macos: @@ -122,9 +119,9 @@ jobs: - "3.x" - "pypy-3.10" - "graalpy-24" - platform: - - target: x86_64 - - target: aarch64 + arch: + - x86_64 + - aarch64 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 @@ -133,13 +130,13 @@ jobs: - name: Build wheels uses: PyO3/maturin-action@v1 with: - target: ${{ matrix.platform.target }} + target: ${{ matrix.arch }} args: ${{ env.COMMON }} sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v4 with: - name: wheels-macos-${{ matrix.platform.target }}-${{ matrix.python-version }} + name: wheels-macos-${{ matrix.arch }}-${{ matrix.python-version }} path: dist sdist: @@ -183,3 +180,78 @@ jobs: with: command: upload args: --non-interactive --skip-existing wheels-*/* + + tests: + # needs can't run off of test matrix, so depend on all wheel jobs + needs: [linux, musllinux, windows, macos] + + strategy: + fail-fast: false + matrix: + python-version: + - "3.9" + - "3.10" + - "3.11" + - "3.12" + - "3.13" + - "pypy-3.10" + - "graalpy-24" + arch: + - x86_64 + - aarch64 + platform: + - linux + - musllinux + - windows + - macos + + exclude: + - platform: windows + python-version: graalpy-24 + - platform: windows + arch: aarch64 + + include: + - wheel: "3.x" + - python-version: "pypy-3.10" + wheel: "pypy-3.10" + - python-version: "graal-24" + wheel: "graal-24" + + - runs: ubuntu-latest + - platform: windows + runs: windows-latest + - platform: macos + runs: macos-latest + + runs-on: ${{ matrix.runs }} + + steps: + - name: Checkout working copy + uses: actions/checkout@v4 + with: + submodules: true + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + allow-prereleases: true + - name: retrieve wheel + uses: actions/download-artifact@v4 + with: + name: wheels-${{ matrix.platform }}-${{ matrix.arch }}-${{ matrix.wheel }} + path: dist + - name: Install test dependencies + run: | + python -mpip install --upgrade pip + # if binary wheels are not available for the current + # package install libyaml-dev so we can install pyyaml + # from source + if ! pip download --only-binary pyyaml > /dev/null 2>&1; then + sudo apt install libyaml-dev + fi + python -mpip install pytest pyyaml + - name: install package + run: pip install --find-links dist ua_parser_rs + - name: run tests + run: pytest -v -Werror -ra ua-parser-py diff --git a/.github/workflows/pytests.yaml b/.github/workflows/pytests.yaml deleted file mode 100644 index 8d6ad79..0000000 --- a/.github/workflows/pytests.yaml +++ /dev/null @@ -1,52 +0,0 @@ -name: py tests - -on: - pull_request: - push: - branches: - - main - -permissions: - contents: read - -jobs: - tests: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - python-version: - - "3.9" - - "3.10" - - "3.11" - - "3.12" - - "3.13" - - "pypy-3.10" - - "graalpy-24" - steps: - - name: Checkout working copy - uses: actions/checkout@v4 - with: - submodules: true - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - allow-prereleases: true - - name: Install test dependencies - run: | - python -mpip install --upgrade pip - # cyaml is outright broken on pypy - #if ! ${{ startsWith(matrix.python-version, 'pypy-') }}; then - # if binary wheels are not available for the current - # package install libyaml-dev so we can install pyyaml - # from source - if ! pip download --only-binary pyyaml > /dev/null 2>&1; then - sudo apt install libyaml-dev - fi - #fi - python -mpip install pytest pyyaml - - name: install package - run: pip install ./ua-parser-py - - name: run tests - run: pytest -v -Werror -ra .