diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b2979dc..e9b0b8c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,21 +29,37 @@ jobs: run: ruff format --check . test: - runs-on: ubuntu-latest - name: Tests (py${{ matrix.python }}) + runs-on: ${{ matrix.os }} + name: Tests (py${{ matrix.python }} / ${{ matrix.os }}) strategy: fail-fast: false matrix: - python: ["3.10", "3.12"] + os: [ubuntu-latest] + python: ["3.10", "3.12", "3.13"] + include: + # Windows tests on 3.12 only — the version the release binaries ship + # with. The self-hosted Windows runner blocks setup-python's install + # script (PowerShell execution policy), so it uses the host's `py` + # launcher + venv, same as release.yml. + - os: windows-latest + python: "3.12" steps: - name: Checkout uses: actions/checkout@v4 - - name: Set up Python ${{ matrix.python }} + - name: Set up Python ${{ matrix.python }} (Linux) + if: runner.os == 'Linux' uses: actions/setup-python@v5 with: python-version: ${{ matrix.python }} + - name: Set up Python venv (Windows) + if: runner.os == 'Windows' + shell: pwsh + run: | + py -${{ matrix.python }} -m venv .venv + Add-Content -Path $env:GITHUB_PATH -Value "$env:GITHUB_WORKSPACE\.venv\Scripts" + # bcc_core has no GUI imports, so the test suite needs no PySide6 — # keeps CI fast and avoids Qt system-library headaches on the runner. - name: Install test dependencies diff --git a/tests/test_core.py b/tests/test_core.py index b07db51..3705811 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -227,8 +227,11 @@ def test_diagnostics_redacts_token_args(): # --------------------------------------------------------------------------- # # 6. Dependency / PATH checking # --------------------------------------------------------------------------- # -def test_dep_check_finds_python3(): - assert c.check_dependency({"command": "python3"})["status"] == "ok" +def test_dep_check_finds_python(): + # "python3" does not exist on a stock Windows install; "warn" (found only + # on an augmented PATH) still proves resolution works on a real machine. + cmd = "python" if os.name == "nt" else "python3" + assert c.check_dependency({"command": cmd})["status"] in ("ok", "warn") def test_dep_check_flags_missing():