-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add CI, tox config and other test adjustments (#3)
* add GHA workflow and tox config * add fixture by @Czaki * remove pyside6 pin * fail-fast: false * prune matrix a bit more * use optional-dependencies * allow dialog via decorator-marker * try something else * prune matrix a bit more * fix link in README * remove py38 * skip on linux py311 pyside2 * skip on all platforms * parametrize fixture and waitUntil * skip module * increase timeout? * update workflows * a bit more? * run all bindings in the same job * wait for a known number of mocked plugins * pre-commit * add pre-commit step * pin to x.x.x * do not use a lambda here * Update napari_plugin_manager/_tests/test_qt_plugin_dialog.py Co-authored-by: Grzegorz Bokota <[email protected]> * Apply suggestions from code review Co-authored-by: Grzegorz Bokota <[email protected]> --------- Co-authored-by: Grzegorz Bokota <[email protected]>
- Loading branch information
Showing
6 changed files
with
241 additions
and
64 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
# This workflow will upload a Python Package using Twine when a release is created | ||
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries | ||
|
||
name: test and deploy | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
tags: | ||
- "v*" # Push events to matching v*, i.e. v1.0, v20.15.10 | ||
pull_request: | ||
branches: | ||
- main | ||
workflow_dispatch: | ||
|
||
concurrency: | ||
# Concurrency group that uses the workflow name and PR number if available | ||
# or commit SHA as a fallback. If a new build is triggered under that | ||
# concurrency group while a previous build is running it will be canceled. | ||
# Repeated pushes to a PR will cancel all previous builds, while multiple | ||
# merges to main will not cancel. | ||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
test: | ||
name: ${{ matrix.platform }}, py${{ matrix.python-version }}, napari ${{ matrix.napari }} | ||
runs-on: ${{ matrix.platform }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
platform: [ubuntu-latest, windows-latest, macos-latest] | ||
python-version: ["3.9", "3.10", "3.11"] | ||
napari: ["latest", "repo"] | ||
exclude: | ||
# TODO: Remove when we have a napari release with the plugin manager changes | ||
- napari: "latest" | ||
# TODO: PyQt / PySide wheels missing | ||
- python-version: "3.11" | ||
platform: "windows-latest" | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Set up Python ${{ matrix.python-version }} | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
|
||
- uses: tlambert03/setup-qt-libs@v1 | ||
|
||
# strategy borrowed from vispy for installing opengl libs on windows | ||
- name: Install Windows OpenGL | ||
if: runner.os == 'Windows' | ||
run: | | ||
git clone --depth 1 https://github.com/pyvista/gl-ci-helpers.git | ||
powershell gl-ci-helpers/appveyor/install_opengl.ps1 | ||
if (Test-Path -Path "C:\Windows\system32\opengl32.dll" -PathType Leaf) {Exit 0} else {Exit 1} | ||
- name: Install dependencies | ||
run: | | ||
python -m pip install --upgrade pip | ||
pip install setuptools tox tox-gh-actions | ||
- name: Test with tox | ||
uses: aganders3/headless-gui@v1 | ||
with: | ||
run: python -m tox -vv | ||
env: | ||
PYVISTA_OFF_SCREEN: True # required for opengl on windows | ||
NAPARI: ${{ matrix.napari }} | ||
FORCE_COLOR: 1 | ||
# PySide6 only functional with Python 3.10+ | ||
TOX_SKIP_ENV: ".*py39-PySide6.*" | ||
|
||
- name: pre-commit | ||
uses: pre-commit/[email protected] | ||
|
||
- name: Coverage | ||
uses: codecov/codecov-action@v3 | ||
|
||
deploy: | ||
# this will run when you have tagged a commit, starting with "v*" | ||
# and requires that you have put your twine API key in your | ||
# github secrets (see readme for details) | ||
needs: [test] | ||
runs-on: ubuntu-latest | ||
if: contains(github.ref, 'tags') | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- name: Set up Python | ||
uses: actions/setup-python@v2 | ||
with: | ||
python-version: "3.x" | ||
- name: Install dependencies | ||
run: | | ||
python -m pip install --upgrade pip | ||
pip install -U setuptools twine build | ||
- name: Build and publish | ||
env: | ||
TWINE_USERNAME: __token__ | ||
TWINE_PASSWORD: ${{ secrets.TWINE_API_KEY }} | ||
run: | | ||
git tag | ||
python -m build | ||
twine upload dist/* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
import pytest | ||
from qtpy.QtWidgets import QDialog, QInputDialog, QMessageBox | ||
|
||
|
||
@pytest.fixture(autouse=True) | ||
def _block_message_box(monkeypatch, request): | ||
def raise_on_call(*_, **__): | ||
raise RuntimeError("exec_ call") # pragma: no cover | ||
|
||
monkeypatch.setattr(QMessageBox, "exec_", raise_on_call) | ||
monkeypatch.setattr(QMessageBox, "critical", raise_on_call) | ||
monkeypatch.setattr(QMessageBox, "information", raise_on_call) | ||
monkeypatch.setattr(QMessageBox, "question", raise_on_call) | ||
monkeypatch.setattr(QMessageBox, "warning", raise_on_call) | ||
monkeypatch.setattr(QInputDialog, "getText", raise_on_call) | ||
# QDialogs can be allowed via a marker; only raise if not decorated | ||
if "enabledialog" not in request.keywords: | ||
monkeypatch.setattr(QDialog, "exec_", raise_on_call) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.