Skip to content

Run tests

Run tests #494

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
strategy:
fail-fast: False
matrix:
include:
# Linux
- os: ubuntu-20.04
python-version: 3.9
test-env: "PyQt5~=5.14.0"
- os: ubuntu-20.04
python-version: "3.10"
test-env: "PyQt5~=5.15.0"
- os: ubuntu-20.04
python-version: "3.11"
test-env: "PyQt5~=5.15.0"
- os: ubuntu-20.04
python-version: "3.11"
test-env: "PyQt6~=6.2.3 PyQt6-Qt6~=6.2.3"
- os: ubuntu-22.04
python-version: "3.11"
test-env: "PyQt6~=6.5.0 PyQt6-Qt6~=6.5.0"
extra-system-packages: "glibc-tools"
- os: ubuntu-22.04
python-version: "3.12"
test-env: "PyQt6~=6.5.0 PyQt6-Qt6~=6.5.0"
extra-system-packages: "glibc-tools"
- os: ubuntu-22.04
python-version: "3.13"
test-env: "PyQt6~=6.7.0 PyQt6-Qt6~=6.7.0"
extra-system-packages: "glibc-tools"
# macOS
- os: macos-13
python-version: 3.9
test-env: "PyQt5~=5.14.0"
- 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-15
python-version: "3.11"
test-env: "PyQt6~=6.2.3 PyQt6-Qt6~=6.2.3"
- 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.7.0 PyQt6-Qt6~=6.7.0"
# Windows
- os: windows-2019
python-version: 3.9
test-env: "PyQt5~=5.15.0"
- os: windows-2019
python-version: "3.10"
test-env: "PyQt5~=5.15.0"
- os: windows-2019
python-version: "3.11"
test-env: "PyQt5~=5.15.0"
- os: windows-2019
python-version: "3.11"
test-env: "PyQt6~=6.2.3 PyQt6-Qt6~=6.2.3"
- os: windows-2019
python-version: "3.11"
test-env: "PyQt6~=6.5.0 PyQt6-Qt6~=6.5.0"
- os: windows-2019
python-version: "3.12"
test-env: "PyQt6~=6.5.0 PyQt6-Qt6~=6.5.0"
- os: windows-2019
python-version: "3.13"
test-env: "PyQt6~=6.7.0 PyQt6-Qt6~=6.7.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 libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0 libegl1-mesa libxcb-shape0 libxcb-cursor0 $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 }}