diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d68abdf..8fb2952 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,3 +49,38 @@ jobs: - name: Integration tests (qsvdp) if: runner.os == 'Linux' run: QSV_BIN="$RUNNER_TEMP/qsv/qsvdp" uv run pytest -q tests/test_integration.py + + # Integration tests only: the unit tests' fake qsv relies on a shebang and skips on Windows, + # so process-group cleanup is not exercised here. + test-windows: + strategy: + fail-fast: false + matrix: + python: ["3.10", "3.14"] + runs-on: windows-latest + defaults: + run: + shell: pwsh + steps: + - uses: actions/checkout@v4 + - uses: astral-sh/setup-uv@v6 + with: + python-version: ${{ matrix.python }} + - run: uv sync + - name: Download the latest qsv release + env: + GH_TOKEN: ${{ github.token }} + run: | + $dir = Join-Path $env:RUNNER_TEMP "qsv" + New-Item -ItemType Directory -Force -Path $dir | Out-Null + gh release download --repo dathere/qsv --pattern "qsv-*-x86_64-pc-windows-msvc.zip" --dir $dir + Get-ChildItem $dir -Filter *.zip | ForEach-Object { Expand-Archive $_.FullName -DestinationPath $dir -Force } + Get-ChildItem $dir + - name: Integration tests (qsv) + run: | + $env:QSV_BIN = Join-Path $env:RUNNER_TEMP "qsv\qsv.exe" + uv run pytest -v tests/test_integration.py + - name: Integration tests (qsvlite) + run: | + $env:QSV_BIN = Join-Path $env:RUNNER_TEMP "qsv\qsvlite.exe" + uv run pytest -q tests/test_integration.py diff --git a/CLAUDE.md b/CLAUDE.md index 04b8b74..dee3454 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -15,6 +15,7 @@ uv run ruff format . && uv run ruff check . && uv run mypy # must be CI runs lint, format check, and mypy, plus tests on ubuntu/macos x Python 3.10–3.13 against qsv, qsvlite, and qsvdp (Linux only). +On Windows (Python 3.10 and 3.14) it runs only the integration tests, against qsv and qsvlite. ## Layout (`src/qsv_client/`)