Repository navigation
Pytest matrix runs a single interpreter; binding it exposes a macOS/3.11 hatch env failure #156
Description
Summary
.github/workflows/pytest.yaml declares a 15-cell test matrix, but every cell runs the same interpreter, so the repo currently has no real Python version coverage. Fixing that reveals a second, separate problem: hatch env create dev fails on macos-latest + Python 3.11.
Raised by Copilot review on #155; removed from that PR to keep it scoped to dependency patching.
1. The matrix does not test what it claims
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- name: Set up Python
uses: actions/setup-python@v7
with:
python-version: '3.x' # <-- not bound to the matrixpython-version is hardcoded, so all 15 jobs install the newest available CPython. The job names (pytest (ubuntu-latest, 3.10)) claim coverage the run does not provide. requires-python = ">=3.10", so 3.10–3.13 are effectively untested.
The one-line fix is python-version: ${{ matrix.python-version }}.
2. That fix exposes a macOS + 3.11 environment failure
With the binding applied, pytest (macos-latest, 3.11) fails during Install dependencies:
Syncing environment plugin requirements
Environment `dev` has unknown type: pip-compile
##[error]Process completed with exit code 1.
Notes:
- Reproducible across two independent runner allocations (initial run and
gh run rerun --failed). - The plugin sync completes in ~240 ms and installs nothing before the failure.
pip-compilecomes fromhatch-pip-compile, declared in[tool.hatch.env] requires. The error means the plugin was not loaded, not that the dev dependencies are wrong.- Not reproducible locally. On macOS arm64 with CPython 3.11.14, against a clean
mainworktree,hatch env create devexits 0 andhatch run dev:pytestgives 76 passed / 100% coverage. Same result on the chore: combine annotated-logger dependency updates #155 branch. - Other cells in the same run get past this step (
ubuntu-latest, 3.10ran the full suite green before fail-fast cancelled it).
So this looks like a hosted-runner-specific hatch plugin resolution problem, not a dependency or source defect.
3. Fail-fast hides the picture
strategy has no fail-fast: false, so the single macOS/3.11 failure cancelled the other 14 jobs mid-step. Adding fail-fast: false alongside the matrix fix would show the true per-version state in one run instead of one failure at a time.
Suggested order of work
- Add
fail-fast: false. - Bind
python-version: ${{ matrix.python-version }}. - Triage the resulting failures; investigate the macOS/3.11
hatch env create devfailure (likely pinninghatch/hatch-pip-compile, or installing the plugin explicitly beforehatch env create).
Evidence
- Failing job: https://github.com/github/annotated-logger/actions/runs/31826048213/job/94850326975
- Reverted from chore: combine annotated-logger dependency updates #155 in
8818bb0; the binding itself is91eac8c.
Activity