mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-06 07:51:47 +00:00
137a890256
Introduce pytest coverage for the previously untested connector — rpc, cache, settings, autodesk (auth + APS client) and connector handlers — 94 tests, runnable via the new `test` optional-dependency extra. To make HTTP, time and the OAuth redirect testable without a network or real sockets, add dependency-injection seams to autodesk.py: AuthSessionService and ApsClient accept an optional httpx transport; AuthSessionService accepts an injectable clock and callback_waiter; and _wait_for_callback is extracted to the module-level wait_for_oauth_callback. All seams default to the previous behaviour. Remove the APS_CLIENT_ID environment-variable override: the client id now comes solely from settings.json, collapsing settings.load_client_id and simplifying the settings dialog. CI: the build-bonsaiviewer-autodesk workflow gains a `test` job (Python 3.11 + 3.13) that gates the build matrix. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
102 lines
3.0 KiB
YAML
102 lines
3.0 KiB
YAML
name: Build Bonsai Viewer Autodesk Connector
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
paths:
|
|
- 'src/bonsaiviewer-autodesk/**'
|
|
- '.github/workflows/build-bonsaiviewer-autodesk.yml'
|
|
pull_request:
|
|
paths:
|
|
- 'src/bonsaiviewer-autodesk/**'
|
|
- '.github/workflows/build-bonsaiviewer-autodesk.yml'
|
|
|
|
jobs:
|
|
test:
|
|
name: test-py${{ matrix.python-version }}
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
# Exercise the floor and a current version of the supported range
|
|
# (pyproject requires-python = ">=3.11").
|
|
python-version: ['3.11', '3.13']
|
|
|
|
defaults:
|
|
run:
|
|
working-directory: src/bonsaiviewer-autodesk
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- uses: actions/setup-python@v6
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
# The connector imports tkinter/customtkinter (via the test suite's
|
|
# connector coverage), so fail loudly here if Tk is missing.
|
|
- name: Verify tkinter is available
|
|
run: python -c "import tkinter; print('Tk', tkinter.TkVersion)"
|
|
|
|
- name: Install package and test deps
|
|
run: python -m pip install ".[test]"
|
|
|
|
- name: Run pytest
|
|
run: python -m pytest -q
|
|
|
|
build:
|
|
name: ${{ matrix.os_label }}-${{ matrix.arch }}
|
|
needs: test
|
|
runs-on: ${{ matrix.runner }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
# Linux: build on the oldest reasonable glibc (Ubuntu 22.04 / glibc
|
|
# 2.35) so the bundle runs on older distributions.
|
|
- os_label: linux
|
|
arch: x86_64
|
|
runner: ubuntu-22.04
|
|
# macOS Apple Silicon.
|
|
- os_label: macos
|
|
arch: arm64
|
|
runner: macos-14
|
|
# macOS Intel. macos-13 is the last Intel runner GitHub provides.
|
|
- os_label: macos
|
|
arch: x86_64
|
|
runner: macos-13
|
|
# Windows x86_64.
|
|
- os_label: windows
|
|
arch: x86_64
|
|
runner: windows-latest
|
|
|
|
defaults:
|
|
run:
|
|
working-directory: src/bonsaiviewer-autodesk
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- uses: actions/setup-python@v6
|
|
with:
|
|
python-version: '3.12'
|
|
|
|
# actions/setup-python ships Python with tkinter on all three OSes via
|
|
# python-build-standalone, but verify so a missing-tk regression fails
|
|
# the build loudly instead of inside PyInstaller.
|
|
- name: Verify tkinter is available
|
|
run: python -c "import tkinter; print('Tk', tkinter.TkVersion)"
|
|
|
|
- name: Install package and build deps
|
|
run: python -m pip install ".[build]"
|
|
|
|
- name: Build connector bundle
|
|
run: python packaging/build.py
|
|
|
|
- name: Upload connector zip
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: autodesk-${{ matrix.os_label }}-${{ matrix.arch }}
|
|
path: src/bonsaiviewer-autodesk/dist/autodesk-${{ matrix.os_label }}-${{ matrix.arch }}.zip
|
|
if-no-files-found: error
|