Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
7315b96d0This file is pinned to the selected release. Download the original to open it in your design tool.
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
test:
name: test (${{ matrix.os }}, py${{ matrix.python }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python: ["3.9", "3.12"]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Install (with dev extra)
run: python -m pip install -e .[dev]
- name: Run tests
run: python -m pytest -q
- name: Coverage gate (pure logic >= 80%)
run: |
python -m coverage run -m pytest -q
python -m coverage report --fail-under=80
example:
name: worked example (offline chain)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: python -m pip install -e .
# Verifies the committed board matches the netlist + passes ERC (no kicad-cli on the
# runner, so DRC/gerber steps report `skip` — those are verified locally and the
# committed drc.rpt shows 0 violations). See VALIDATION.md.
- run: python tools/reproduce_example.py --check
- name: Placement plan (P1)
run: python -m pcbflow.cli place-plan projects/example-usb-c-3v3/04_schematic/netlist.enet --out /tmp/plan.json --svg /tmp/map.svg
- name: Routing rulebook + silk (R2/G1)
run: python -m pcbflow.cli route-check projects/example-usb-c-3v3/04_schematic/netlist.enet projects/example-usb-c-3v3/10_kicad_export/board.kicad_pcb
- name: Hardware checks (T1-T4)
run: python -m pcbflow.cli hw projects/example-usb-c-3v3/04_schematic/netlist.enet --board projects/example-usb-c-3v3/10_kicad_export/board.kicad_pcb
- run: python tools/doctor.py || true # smoke: doctor runs and reports