Skip to content

[MNT] CI: Add Python 3.14 to test matrix #558

[MNT] CI: Add Python 3.14 to test matrix

[MNT] CI: Add Python 3.14 to test matrix #558

name : Run tests
on: [push, pull_request]
jobs:
test:
runs-on: ${{ matrix.os }}
timeout-minutes: 5
env:
PYTHONFAULTHANDLER: 1
PIP_NO_PIP_VERSION_CHECK: 1
PIP_CACHE_DIR: .pip-cache
PIP_PREFER_BINARY: 1
UBUNTU_SYSTEM_PACKAGES: |
libxkbcommon-x11-0
libxcb-icccm4
libxcb-image0
libxcb-keysyms1
libxcb-randr0
libxcb-render-util0
libxcb-xinerama0
libxcb-xfixes0
libegl1
libxcb-shape0
libxcb-cursor0
glibc-tools
strategy:
fail-fast: False
matrix:
include:
# Linux
- os: ubuntu-22.04
python-version: "3.10"
test-env: "PyQt5~=5.15.0"
- os: ubuntu-22.04
python-version: "3.11"
test-env: "PyQt5~=5.15.0"
- os: ubuntu-latest
python-version: "3.11"
test-env: "PyQt6~=6.5.0 PyQt6-Qt6~=6.5.0"
- os: ubuntu-latest
python-version: "3.12"
test-env: "PyQt6~=6.5.0 PyQt6-Qt6~=6.5.0"
- os: ubuntu-latest
python-version: "3.13"
test-env: "PyQt6~=6.8.0 PyQt6-Qt6~=6.8.0"
- os: ubuntu-latest
python-version: "3.14"
test-env: "PyQt6~=6.9.0 PyQt6-Qt6~=6.9.0"
# macOS
- os: macos-13
python-version: "3.10"
test-env: "PyQt5~=5.15.0"
- os: macos-14
python-version: "3.11"
test-env: "PyQt5~=5.15.0"
- os: macos-latest
python-version: "3.11"
test-env: "PyQt6~=6.5.0 PyQt6-Qt6~=6.5.0"
- os: macos-latest
python-version: "3.12"
test-env: "PyQt6~=6.5.0 PyQt6-Qt6~=6.5.0"
- os: macos-latest
python-version: "3.13"
test-env: "PyQt6~=6.8.0 PyQt6-Qt6~=6.8.0"
- os: macos-latest
python-version: "3.14"
test-env: "PyQt6~=6.9.0 PyQt6-Qt6~=6.9.0"
# Windows
- os: windows-2022
python-version: "3.10"
test-env: "PyQt5~=5.15.0"
- os: windows-2022
python-version: "3.11"
test-env: "PyQt5~=5.15.0"
- os: windows-latest
python-version: "3.11"
test-env: "PyQt6~=6.5.0 PyQt6-Qt6~=6.5.0"
- os: windows-latest
python-version: "3.12"
test-env: "PyQt6~=6.5.0 PyQt6-Qt6~=6.5.0"
- os: windows-latest
python-version: "3.13"
test-env: "PyQt6~=6.8.0 PyQt6-Qt6~=6.8.0"
- os: windows-latest
python-version: "3.14"
test-env: "PyQt6~=6.9.0 PyQt6-Qt6~=6.9.0"
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install System Deps
if: ${{ startsWith(runner.os, 'Linux') }}
env:
PACKAGES: ${{ matrix.extra-system-packages }}
# https://www.riverbankcomputing.com/pipermail/pyqt/2020-June/042949.html
run: |
sudo apt-get update
sudo apt-get install -y $UBUNTU_SYSTEM_PACKAGES $PACKAGES
- name: Setup Pip Cache
uses: actions/cache@v4
with:
path: .pip-cache
key: ${{ runner.os }}-py-${{ matrix.python-version }}-pip-${{ hashFiles('setup.*', '.github/workflows/run-tests-workflow.yml') }}
restore-keys: |
${{ runner.os }}-py-${{ matrix.python-version }}-pip
- name: Install Test Deps
env:
TEST_ENV: ${{ matrix.test-env }}
TEST_DEPS: pytest pytest-cov wheel
run: python -m pip install $TEST_DEPS $TEST_ENV
shell: bash
- name: Install
run: python -m pip install -e .
- name: List Test Env
run: pip list --format=freeze
- name: Run Tests
if: ${{ !startsWith(runner.os, 'Linux') }}
run: pytest -v --cov=orangecanvas
- name: Run Tests with Xvfb
if: ${{ startsWith(runner.os, 'Linux') }}
env:
XVFBARGS: "-screen 0 1280x1024x24"
run: catchsegv xvfb-run -a -s "$XVFBARGS" pytest -v --cov=orangecanvas --cov-report=xml
- name: Test non-ascii install path
if: ${{ startsWith(runner.os, 'Linux') }}
env:
TEST_ENV: ${{ matrix.test-env }}
XVFBARGS: "-screen 0 1280x1024x24"
run: |
NAME="ščž ćžđ"
python -m venv "$NAME"
. "$NAME"/bin/activate
pip install $TEST_ENV ./
cd ..
catchsegv xvfb-run -a -s "$XVFBARGS" python -m orangecanvas --help
- name: Upload Coverage
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}