ci: [pre-commit.ci] pre-commit autoupdate #5419
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
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 |