63 lines
2.2 KiB
YAML
63 lines
2.2 KiB
YAML
name: e2e-wheel
|
|
|
|
# Cross-OS end-to-end WIRING test (FPLAN-0239, P1 of DPLAN-0194).
|
|
# Builds the wheel, installs it into a clean venv (handled by the pytest
|
|
# fixtures in tests/e2e/conftest.py), and runs the 4-tier wiring ladder.
|
|
#
|
|
# RED-FIRST: Windows is EXPECTED to fail in known places (symlink init,
|
|
# bin-vs-Scripts, /tmp). Do not "fix" Windows here — the red is the deliverable.
|
|
|
|
on:
|
|
push:
|
|
branches: [main, dev]
|
|
paths:
|
|
- "tests/e2e/**"
|
|
- ".github/workflows/e2e-wheel.yml"
|
|
- "pyproject.toml"
|
|
- "src/**"
|
|
pull_request:
|
|
paths:
|
|
- "tests/e2e/**"
|
|
- ".github/workflows/e2e-wheel.yml"
|
|
- "pyproject.toml"
|
|
- "src/**"
|
|
workflow_dispatch:
|
|
|
|
# Least-privilege token (Scorecard Token-Permissions). This workflow only
|
|
# reads the repo to build + smoke-test the wheel; it needs no write scopes.
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
e2e-wheel:
|
|
name: e2e-wheel (${{ matrix.os }})
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
python-version: ["3.12"]
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
- name: Install build tooling
|
|
# Hash-pinned (Scorecard: Pinned-Dependencies). e2e.txt carries colorama
|
|
# explicitly — build/pytest need it only on Windows (os_name == "nt" /
|
|
# sys_platform == "win32"), and a Linux-generated lock would otherwise
|
|
# omit it and break the windows-latest leg under --require-hashes.
|
|
# See .github/requirements/e2e.in.
|
|
run: |
|
|
python -m pip install --require-hashes -r .github/requirements/pip.txt
|
|
python -m pip install --require-hashes -r .github/requirements/e2e.txt
|
|
|
|
- name: Run cross-OS e2e wiring harness
|
|
# conftest.py builds the wheel + clean venv internally; the outer env
|
|
# only needs build + pytest.
|
|
run: python -m pytest tests/e2e -v
|