ecu-tests/deprecated
Hosam-Eldin Mostafa 90be834102 refactor: retire LIN API generator (move to deprecated/)
With AlmTester now the single contributor-facing API, the generator at
``scripts/gen_lin_api.py`` and its output at
``tests/hardware/_generated/`` have no live consumer — the previous
commit inlined the enum classes they used to provide into
``tests/hardware/alm_helpers.py``.

Moves both to ``deprecated/`` rather than deleting outright. The
deprecated layout is self-describing:

    deprecated/
      README.md          — retirement rationale + revival instructions
      gen_lin_api.py     — was scripts/gen_lin_api.py
      _generated/
        __init__.py
        lin_api.py       — last-emitted typed frame classes + IntEnums

A note in deprecated/README.md spells out the conditions that would
make reviving the generator worthwhile (a second ECU joins, the LDF
churns fast enough to make hand-syncing miss changes, mypy-in-CI gets
adopted) and the exact command to regenerate.

Docs:

- 22_generated_lin_api.md now leads with a retired-layer banner. The
  body is preserved as the design-of-record for the historical layer.
- 05_architecture_overview.md gets a refreshed "Test-side layering"
  Mermaid (AlmTester → FrameIO → LinInterface) plus a "retired layer"
  bullet pointing at deprecated/. The "Three independent entry points"
  section is annotated rather than removed — the gen_lin_api path
  there is now historical reference.

Verified: pytest --collect-only collects 87 tests; 40 unit + mock
tests still pass. The retirement is invisible to the live framework.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 01:24:12 +02:00
..

Deprecated

Historical artifacts kept for reference. Nothing in this directory is imported by the live framework or test suite.

Contents

Path Was Why retired
gen_lin_api.py scripts/gen_lin_api.py — LDF → Python generator Replaced by hand-maintained AlmTester in tests/hardware/alm_helpers.py. The generated layer had one consumer (AlmTester) and adding signals to the generator was less ergonomic than adding methods to the facade.
_generated/lin_api.py tests/hardware/_generated/lin_api.py — auto-emitted typed frame classes + enum classes Same — its enum classes were inlined into alm_helpers.py so test bodies need only one import.

If you want to bring this back

The design is documented in ../docs/22_generated_lin_api.md. Reasons it might be worth reviving:

  • A second ECU joins the framework and adding <ecu>_helpers.py facades by hand becomes painful.
  • The LDF starts churning fast enough that hand-syncing alm_helpers.py enums against it is missing changes.
  • The team grows to where mypy-in-CI becomes worth it and the generated dataclass shape (with typed signal attributes) starts paying for itself.

The generator is self-contained and parses a single LDF — re-runnable in place from this directory:

python deprecated/gen_lin_api.py vendor/4SEVEN_color_lib_test.ldf \
    --out tests/hardware/_generated/lin_api.py

(Restoring also requires adding tests/hardware/_generated/__init__.py back, which is currently inside this folder.)