Restructures tests/hardware/ so that fixture access is controlled by
directory layout — pytest only walks upward through conftest.py files,
so a PSU test physically cannot request fio/alm/nad.
Layout:
- tests/hardware/conftest.py (unchanged: PSU fixtures)
- tests/hardware/mum/conftest.py NEW: _require_mum (session autouse),
fio (session), nad (session),
alm (session), _reset_to_off
(function autouse)
- tests/hardware/mum/** MUM tests + swe5/ + swe6/
- tests/hardware/psu/** PSU-only tests
- tests/hardware/babylin/** deprecated BabyLIN E2E
What this removes (was duplicated before):
- 7 verbatim copies of the `fio` fixture
- 6 copies of the `alm` fixture
- 6 copies of the `_reset_to_off` autouse
- 9 inline `if config.interface.type != "mum": pytest.skip(...)` gates
What this changes by design:
- fio / alm / nad scope: module → session. NAD discovery happens once
per run instead of once per module. The helpers are immutable beyond
their constructor args, so sharing them is safe; per-test state is
reset by the autouse `_reset_to_off`.
- test_overvolt.py: `_park_at_nominal` is now `_reset_to_off`, which
cleanly overrides the conftest's LED-only version (PSU + LED reset).
- test_mum_alm_animation_generated.py keeps a local `_reset_to_off` +
`_force_off` so its "no AlmTester anywhere" demonstration is preserved
via fixture override; the local `nad` is also retained because it
uses the typed `AlmStatus.receive` API.
Docs:
- docs/24_test_wiring.md NEW — describes the three-layer fixture
topology, lifecycle sequence diagram, helper class wiring, and the
playbook for adding a new framework component.
- docs/05_architecture_overview.md: add MCF (mum conftest) node to the
Mermaid diagram + mention it in the components list.
- docs/19_frame_io_and_alm_helpers.md: replace the per-module
fixture-wiring example with a request-fixtures-by-name snippet plus
the override pattern.
- Path references swept across docs/02, docs/14, docs/18, docs/20,
docs/README to point at the new locations.
Verified: pytest --collect-only collects 93 tests with no errors;
30 unit tests and 10 mock-only smoke tests pass; fixture-per-test
output shows PSU tests cannot see fio/alm/nad.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
37 lines
3.0 KiB
Markdown
37 lines
3.0 KiB
Markdown
# Documentation Index
|
|
|
|
A guided tour of the ECU testing framework. Start here:
|
|
|
|
1. `01_run_sequence.md` — End-to-end run sequence and call flow
|
|
2. `02_configuration_resolution.md` — How configuration is loaded and merged
|
|
3. `03_reporting_and_metadata.md` — How test documentation becomes report metadata
|
|
4. `11_conftest_plugin_overview.md` — Custom pytest plugin: hooks, call sequence, and artifacts
|
|
5. `04_lin_interface_call_flow.md` — LIN abstraction and adapter behavior (Mock, MUM, and the deprecated BabyLIN)
|
|
6. `05_architecture_overview.md` — High-level architecture and components
|
|
7. `06_requirement_traceability.md` — Requirement markers and coverage visuals
|
|
8. `07_flash_sequence.md` — ECU flashing workflow and sequence diagram
|
|
9. `08_babylin_internals.md` — BabyLIN SDK wrapper internals and call flow (DEPRECATED)
|
|
10. `16_mum_internals.md` — MUM (Melexis Universal Master) adapter internals and call flow
|
|
11. `17_ldf_parser.md` — LDF parser, `ldf` fixture, and per-frame `pack`/`unpack` helpers
|
|
12. `18_test_catalog.md` — Per-test catalog: purpose, markers, hardware needs, expected result
|
|
13. `DEVELOPER_COMMIT_GUIDE.md` — What to commit vs ignore, commands
|
|
14. `09_raspberry_pi_deployment.md` — Run on Raspberry Pi (venv, service, hardware notes)
|
|
15. `10_build_custom_image.md` — Build a custom Raspberry Pi OS image with the framework baked in
|
|
16. `12_using_the_framework.md` — Practical usage: local, hardware (MUM, or the deprecated BabyLIN), CI, and Pi
|
|
17. `13_unit_testing_guide.md` — Unit tests layout, markers, coverage, and tips
|
|
18. `14_power_supply.md` — Owon PSU control, configuration, tests, and quick demo script
|
|
19. `15_report_properties_cheatsheet.md` — Standardized keys for record_property/rp across suites
|
|
20. `19_frame_io_and_alm_helpers.md` — Hardware-test helpers: `FrameIO` (generic LDF I/O) and `AlmTester` (ALM_Node domain), plus the `tests/hardware/_test_case_template.py` starting point
|
|
21. `20_docker_image.md` — Containerizing the framework: mock-only CI image, hardware-passthrough image, the Melexis-package obstacle, compose & CI examples
|
|
22. `21_yocto_image_for_raspberry_pi.md` — Building a Yocto image that turns a Raspberry Pi into a self-contained test bench (BSP layout, recipes, network/USB config, deploy & maintenance)
|
|
23. `23_config_loader_internals.md` — How `ecu_framework/config/loader.py` is implemented: merge semantics, type coercion, schema quirks, and the PSU side-channel
|
|
24. `24_test_wiring.md` — How tests are wired to the framework: fixture topology, session lifecycle, the polymorphism boundary on `lin`, and the playbook for adding a new framework component
|
|
|
|
Related references:
|
|
|
|
- Root project guide: `../README.md`
|
|
- Full framework guide: `../TESTING_FRAMEWORK_GUIDE.md`
|
|
- BabyLIN placement and integration: `../vendor/README.md` (deprecated; only relevant for legacy rigs)
|
|
- MUM source scripts and protocol details: `../vendor/automated_lin_test/README.md`
|
|
- PSU quick demo and scripts: `../vendor/Owon/`
|