Skip to content

ci: [pre-commit.ci] pre-commit autoupdate #5419

ci: [pre-commit.ci] pre-commit autoupdate

ci: [pre-commit.ci] pre-commit autoupdate #5419

Workflow file for this run

name: Tests
on:
push:
branches:
- develop
- feature_prepare/**
- main
pull_request:
branches:
- '**'
workflow_dispatch:
concurrency:
group: test-${{ github.ref }}
cancel-in-progress: true
jobs:
actionlint:
name: Action lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check workflow files
run: |
bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
./actionlint -color -ignore SC2129
shell: bash
download_data:
name: Download test data
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- shell: bash
run: bash build_utils/download_data.sh
- name: Upload test data
uses: actions/upload-artifact@v4
with:
name: test_data
path: test_data
retention-days: 5
base-test:
name: Base py${{ matrix.python_version }}
if: github.event_name == 'pull_request'
uses: ./.github/workflows/base_test_workflow.yml
needs: download_data
strategy:
fail-fast: false
matrix:
python_version: ["3.9", "3.10", "3.11", "3.12"]
os: ["ubuntu-24.04"]
qt_backend: ["PyQt5"]
tox_args: [ "" ]
include:
- python_version: "3.11"
os: "macos-13"
qt_backend: "PyQt5"
- python_version: "3.12"
os: "macos-14"
qt_backend: "PyQt6"
- python_version: "3.11"
os: "windows-latest"
qt_backend: "PyQt5"
- python_version: "3.10"
os: "ubuntu-20.04"
qt_backend: "PySide2"
- python_version: "3.10"
os: "ubuntu-24.04"
qt_backend: "PySide6"
- python_version: "3.12"
os: "ubuntu-22.04"
qt_backend: "PyQt6"
- python_version: "3.10"
os: "ubuntu-22.04"
qt_backend: "PyQt5"
pydantic: "_pydantic_1"
with:
test_data: True
python_version: ${{ matrix.python_version }}
os: ${{ matrix.os }}
qt_backend: ${{ matrix.qt_backend }}
tox_args: ${{ matrix.tox_args }}
pydantic: ${{ matrix.pydantic }}
base-test-main:
name: Base py${{ matrix.python_version }}
if: github.event_name == 'push'
uses: ./.github/workflows/base_test_workflow.yml
needs: download_data
strategy:
fail-fast: false
matrix:
python_version: ["3.9", "3.10", "3.11", "3.12"]
os: ["ubuntu-24.04", "macos-14", "windows-2022"]
qt_backend: ["PySide2", "PyQt5"]
include:
- python_version: "3.12"
qt_backend: "PyQt5"
os: "ubuntu-22.04"
- python_version: "3.10"
os: "ubuntu-22.04"
qt_backend: "PySide6"
- python_version: "3.11"
os: "ubuntu-22.04"
qt_backend: "PyQt6"
- python_version: "3.11"
os: "ubuntu-22.04"
qt_backend: "PyQt5"
pydantic: "_pydantic_1"
exclude:
- python_version: "3.11"
qt_backend: "PySide2"
- python_version: "3.12"
qt_backend: "PySide2"
- os: "macos-14"
qt_backend: "PySide2"
- os: "macos-14"
python_version: "3.9"
with:
test_data: True
python_version: ${{ matrix.python_version }}
os: ${{ matrix.os }}
qt_backend: ${{ matrix.qt_backend }}
pydantic: ${{ matrix.pydantic }}
artifact_suffix: "-main"
pytest_args: "-v"
test_coverage:
needs: download_data
uses: ./.github/workflows/base_test_workflow.yml
with:
test_data: True
python_version: "3.12"
tox_args: "-e py312-PyQt5-coverage"
coverage: true
test_minimal:
name: Test PartSeg minimal
needs: download_data
uses: ./.github/workflows/base_test_workflow.yml
with:
test_data: True
python_version: "3.9"
tox_args: "-e py39-PyQt5-minimal"
coverage: true
coverage_prepare:
name: Prepare coverage
runs-on: ubuntu-latest
needs: [test_coverage, test_minimal]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.x"
cache-dependency-path: pyproject.toml
cache: 'pip'
- name: Install Dependencies
run: |
pip install --upgrade pip
pip install codecov
- name: Download coverage data
uses: actions/download-artifact@v4
with:
pattern: cov-reports-*
path: coverage
merge-multiple: true
- name: combine coverage data
run: |
python -Im coverage combine coverage
python -Im coverage xml -o coverage.xml
# Report and write to summary.
python -Im coverage report --format=markdown --skip-empty --skip-covered >> "$GITHUB_STEP_SUMMARY"
- name: Upload coverage artifact
uses: actions/upload-artifact@v4
with:
name: coverage_xml
path: coverage.xml
retention-days: 5
- name: Upload coverage data
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
test_conda:
name: Test PartSeg conda
runs-on: ubuntu-24.04
needs: download_data
steps:
- uses: actions/checkout@v4
- name: Setup Miniconda
uses: conda-incubator/setup-miniconda@v3
with:
miniforge-version: latest
use-mamba: true
channels: conda-forge
channel-priority: strict
python-version: "3.12"
- uses: tlambert03/setup-qt-libs@v1
- name: Download test data
uses: actions/download-artifact@v4
with:
name: test_data
path: test_data
- name: Use mamba solver
shell: "bash -el {0}"
run: |
conda install -n base conda-libmamba-solver
conda config --set solver libmamba
- name: Install dependencies
shell: "bash -el {0}"
run: |
mamba install -y "tox-conda>=0.10.0"
- name: List environment packages
shell: "bash -el {0}"
run: conda list
- name: create environment
shell: "bash -el {0}"
run: bash build_utils/create_environment_yml.sh
- name: Upload environment file
uses: actions/upload-artifact@v4
with:
name: environment
path: environment.yml
retention-days: 5
- name: patch tox.ini
shell: "bash -el {0}"
run: sed -e "s/{sys_platform}/{platform}/g" tox.ini -i
- name: Test with tox
uses: aganders3/headless-gui@v2
with:
run: conda run -n test --no-capture-output tox -e py312-PySide2-conda
timeout-minutes: 60
check-package:
name: Build & inspect our package.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: hynek/build-and-inspect-python-package@v2