Skip to content

tests

tests #1989

name: tests
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
push:
branches: [main]
tags: [v*]
pull_request:
workflow_dispatch:
schedule:
- cron: "0 0 * * *" # run once a day
jobs:
test:
name: Test
uses: pyapp-kit/workflows/.github/workflows/test-pyrepo.yml@v2
with:
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
qt: ${{ matrix.qt }}
pip-install-pre-release: ${{ github.event_name == 'schedule' }}
coverage-upload: artifact
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11"]
os: [ubuntu-latest, macos-latest, windows-latest]
qt: [pyqt6, pyside6]
include:
- python-version: "3.8"
os: ubuntu-latest
qt: pyqt5
- python-version: "3.8"
os: macos-13
qt: pyside2
- python-version: "3.8"
os: windows-latest
qt: pyqt5
- python-version: "3.9"
os: macos-13
qt: pyqt5
- python-version: "3.9"
os: ubuntu-latest
qt: pyside2
- python-version: "3.10"
os: ubuntu-latest
qt: pyside2
- python-version: "3.12"
os: ubuntu-latest
qt: pyqt6
- python-version: "3.12"
os: ubuntu-latest
qt: pyside6
test-min-reqs:
name: Test min reqs
uses: pyapp-kit/workflows/.github/workflows/test-pyrepo.yml@v2
with:
os: ubuntu-latest
python-version: ${{ matrix.python-version }}
qt: pyqt5
pip-install-min-reqs: true
coverage-upload: artifact
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
upload_coverage:
if: always()
needs: [test, test-min-reqs]
uses: pyapp-kit/workflows/.github/workflows/upload-coverage.yml@v2
secrets: inherit
test-pydantic1:
name: Test pydantic1
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- uses: tlambert03/setup-qt-libs@v1.7
- name: Install dependencies
run: |
python -m pip install -e .
python -m pip install pytest 'pydantic<2' attrs pytest-cov pyqt6
- name: Test
uses: aganders3/headless-gui@v2
with:
run: pytest tests/test_ui_field.py -v --color=yes --cov=magicgui --cov-report=xml
- uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
test-dependents:
uses: pyapp-kit/workflows/.github/workflows/test-dependents.yml@v2
with:
dependency-repo: ${{ matrix.package }}
dependency-ref: ${{ matrix.package-version }}
dependency-extras: ${{ matrix.package-extras || 'testing' }}
host-extras: "testing"
qt: pyqt5
python-version: "3.10"
post-install-cmd: "python -m pip install pytest-pretty lxml_html_clean" # just for napari
pytest-args: ${{ matrix.pytest-args }}
strategy:
fail-fast: false
matrix:
include:
- package: napari/napari
pytest-args: napari/_tests/test_magicgui.py
- package: napari/napari
package-version: "v0.4.19.post1"
pytest-args: napari/_tests/test_magicgui.py
- package: hanjinliu/magic-class
- package: stardist/stardist-napari
package-extras: test
pytest-args: stardist_napari
- package: 4DNucleome/PartSeg
package-extras: test
pytest-args: package/tests/test_PartSeg/test_napari_widgets.py
deploy:
needs: test
runs-on: ubuntu-latest
if: ${{ github.repository == 'pyapp-kit/magicgui' && contains(github.ref, 'tags') }}
permissions:
id-token: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -U setuptools setuptools_scm wheel twine build
- name: Build
run: |
git tag
python -m build
twine check dist/*
- name: Create Release
uses: softprops/action-gh-release@v2
with:
files: dist/*
body_path: ${{ github.workspace }}/CHANGELOG.md
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1