Skip to content

Commit

Permalink
ci: use reusable ci workflow (#241)
Browse files Browse the repository at this point in the history
* ci: try reusable

* fix string

* update

* fix magicgui

* test different version

* exclude win  312

* use py310 for testing magicgui

* change matrix
  • Loading branch information
tlambert03 authored Nov 15, 2023
1 parent 5186ff4 commit 829f330
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 114 deletions.
168 changes: 56 additions & 112 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,137 +2,81 @@ name: CI

on:
push:
branches:
- main
branches: [main]
pull_request: {}
workflow_dispatch:
schedule:
- cron: "0 0 * * 0" # run once a week

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
check-manifest:
name: Check Manifest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: "3.x"
- run: pip install check-manifest && check-manifest

test-linux:
name: py${{ matrix.python-version }} on ${{ matrix.platform }} ${{ matrix.backend }} ${{ matrix.pydantic }}
runs-on: ${{ matrix.platform }}

- run: pipx run check-manifest

test:
name: Test
uses: pyapp-kit/workflows/.github/workflows/test-pyrepo.yml@v1
with:
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
pip-post-installs: ${{ matrix.pydantic }}
fail-on-coverage-error: false
hatch-build-hooks-enable: ${{ matrix.compile }}
pip-install-pre-release: ${{ github.event_name == 'schedule' }}
report-failures: ${{ github.event_name == 'schedule' }}
strategy:
fail-fast: false
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
platform: [ubuntu-latest, macos-latest, windows-latest]
backend: [""]
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
os: [ubuntu-latest, macos-latest, windows-latest]
compile: [true, false]
include:
- platform: ubuntu-latest
python-version: "3.10"
backend: "PyQt5"
- platform: macos-latest
python-version: "3.10"
backend: "PyQt6"
- platform: ubuntu-latest
python-version: "3.10"
backend: "PySide2"
- platform: macos-latest
python-version: "3.10"
backend: "PySide6"
- platform: ubuntu-latest
python-version: "3.11"
pydantic: "pydantic<2"
- platform: windows-latest
- os: ubuntu-latest
python-version: "3.12"
pydantic: "'pydantic<2'"
- os: windows-latest
python-version: "3.11"
pydantic: "pydantic<2"
- platform: ubuntu-latest
python-version: "3.12-dev"
backend: ""

steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}

- uses: tlambert03/[email protected]
if: matrix.backend != ''

- name: Install ${{ matrix.backend }}
if: matrix.backend != ''
run: |
python -m pip install -e .[testqt]
python -m pip install ${{ matrix.backend }}
- name: install
run: |
python -m pip install -U pip
python -m pip install -e .[test]
python -c "import sys, psygnal; sys.exit(1 if psygnal._compiled else 0)"
- name: downgrade pydantic
if: matrix.pydantic != ''
run: python -m pip install "${{ matrix.pydantic }}"

- name: test uncompiled
uses: aganders3/headless-gui@v1
with:
run: pytest --color=yes --cov=psygnal --cov-report=xml

- name: compile and retest
run: |
python -m pip install -e .
python -c "import sys, psygnal; sys.exit(0 if psygnal._compiled else 1)"
env:
HATCH_BUILD_HOOKS_ENABLE: "1"

- name: test compiled
if: matrix.python-version != '3.12-dev'
uses: aganders3/headless-gui@v1
with:
run: pytest --color=yes --cov=psygnal --cov-report=xml --cov-append

- uses: codecov/codecov-action@v3
with:
fail_ci_if_error: true
verbose: true
pydantic: "'pydantic<2'"
exclude:
- os: windows-latest
python-version: "3.12"
- os: windows-latest
python-version: "3.7"
- os: macos-latest
python-version: "3.7"

test-qt:
name: Test Qt
uses: pyapp-kit/workflows/.github/workflows/test-pyrepo.yml@v1
with:
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
qt: ${{ matrix.qt }}
extras: "test,testqt"
hatch-build-hooks-enable: ${{ matrix.compile }}
pip-install-pre-release: ${{ github.event_name == 'schedule' }}
report-failures: ${{ github.event_name == 'schedule' }}
strategy:
fail-fast: false
matrix:
python-version: ["3.10"]
os: [macos-latest, windows-latest]
qt: [PyQt5, PyQt6, PySide2, PySide6]
compile: [true, false]

test-magicgui:
name: test magicgui
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
path: psygnal

- uses: actions/checkout@v4
with:
repository: pyapp-kit/magicgui
path: magicgui

- uses: actions/setup-python@v4
with:
python-version: "3.10"
- uses: tlambert03/setup-qt-libs@v1
- name: install
run: |
python -m pip install -U pip
pip install -e magicgui[testing,pyside2]
pip install -e psygnal
- name: test magicgui
uses: aganders3/headless-gui@v1
with:
run: python -m pytest magicgui/tests -v --color=yes
uses: pyapp-kit/workflows/.github/workflows/test-dependents.yml@v1
with:
dependency-repo: pyapp-kit/magicgui
dependency-extras: "testing"
qt: "pyside2"
python-version: "3.10"

typing:
runs-on: ubuntu-latest
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -211,8 +211,8 @@ exclude_lines = [
"raise NotImplementedError()",
]
[tool.coverage.run]
source = ["src"]
omit = ["src/psygnal/_pyinstaller_util/hook-psygnal.py"]
source = ["psygnal"]
omit = ["*/_pyinstaller_util/hook-psygnal.py"]

# https://github.com/mgedmin/check-manifest#configuration
[tool.check-manifest]
Expand Down

0 comments on commit 829f330

Please sign in to comment.