57de32b172
Fixes 25 remaining manual lint errors after auto-fix pass (94 auto-fixed earlier): - GUI_V6.py: noqa on availability imports, bare except, unused vars, F811 redefs - GUI_V6_Demo.py: unused app variable - v7/models.py: noqa F401 on 8 try/except availability-check imports - FPGA cosim: unused header/status/span vars, ambiguous 'l' renamed to 'line', E701 while-on-one-line split, F841 padding vars annotated Also adds v7/ module, GUI_PyQt_Map.py, and GUI_V7_PyQt.py to version control. Expands CI lint job to cover all 21 maintained Python files (was 4). All 58 Python tests pass. Zero ruff errors on all target files.
108 lines
3.5 KiB
YAML
108 lines
3.5 KiB
YAML
name: AERIS-10 CI
|
|
|
|
on:
|
|
pull_request:
|
|
branches: [main, develop]
|
|
push:
|
|
branches: [main, develop]
|
|
|
|
jobs:
|
|
# ===========================================================================
|
|
# Job 0: Ruff Lint (all maintained Python files)
|
|
# Covers: active GUI files, v6+ GUIs, v7/ module, FPGA cosim scripts
|
|
# Excludes: legacy GUI_V1-V5, schematics, simulation, 8_Utils
|
|
# ===========================================================================
|
|
lint:
|
|
name: Ruff Lint
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Python 3.12
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.12"
|
|
|
|
- name: Install ruff
|
|
run: pip install ruff
|
|
|
|
- name: Run ruff on maintained files
|
|
run: |
|
|
ruff check \
|
|
9_Firmware/9_3_GUI/radar_protocol.py \
|
|
9_Firmware/9_3_GUI/radar_dashboard.py \
|
|
9_Firmware/9_3_GUI/smoke_test.py \
|
|
9_Firmware/9_3_GUI/test_radar_dashboard.py \
|
|
9_Firmware/9_3_GUI/GUI_V6.py \
|
|
9_Firmware/9_3_GUI/GUI_V6_Demo.py \
|
|
9_Firmware/9_3_GUI/GUI_PyQt_Map.py \
|
|
9_Firmware/9_3_GUI/GUI_V7_PyQt.py \
|
|
9_Firmware/9_3_GUI/v7/ \
|
|
9_Firmware/9_2_FPGA/tb/cosim/ \
|
|
9_Firmware/9_2_FPGA/tb/gen_mf_golden_ref.py
|
|
|
|
# ===========================================================================
|
|
# Job 1: Python Host Software Tests (58 tests)
|
|
# radar_protocol, radar_dashboard, FT2232H connection, replay, opcodes, e2e
|
|
# ===========================================================================
|
|
python-tests:
|
|
name: Python Dashboard Tests (58)
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Python 3.12
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.12"
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install pytest numpy h5py
|
|
|
|
- name: Run test suite
|
|
run: python -m pytest 9_Firmware/9_3_GUI/test_radar_dashboard.py -v --tb=short
|
|
|
|
# ===========================================================================
|
|
# Job 2: MCU Firmware Unit Tests (20 tests)
|
|
# Bug regression (15) + Gap-3 safety tests (5)
|
|
# ===========================================================================
|
|
mcu-tests:
|
|
name: MCU Firmware Tests (20)
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install build tools
|
|
run: sudo apt-get update && sudo apt-get install -y build-essential
|
|
|
|
- name: Build and run MCU tests
|
|
working-directory: 9_Firmware/9_1_Microcontroller/tests
|
|
run: make test
|
|
|
|
# ===========================================================================
|
|
# Job 3: FPGA RTL Regression (23 testbenches + lint)
|
|
# Phase 0: Vivado-style lint, Phase 1-4: unit + integration + e2e
|
|
# ===========================================================================
|
|
fpga-regression:
|
|
name: FPGA Regression (23 TBs + lint)
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Icarus Verilog
|
|
run: sudo apt-get update && sudo apt-get install -y iverilog
|
|
|
|
- name: Run full FPGA regression
|
|
working-directory: 9_Firmware/9_2_FPGA
|
|
run: bash run_regression.sh
|