Check the reference corpus in, so the build stops needing the Go submodule
All 41 .bas/.txt pairs copied byte for byte from basicinterpreter@d76162c into tests/reference/, plus the Commodore font into assets/fonts/ -- the two things that tied the build to deps/basicinterpret. Both were verified cmp-identical to the submodule copies. This reverses a decision that was deliberate and correct at the time: the corpus was driven in place because copying a submodule's corpus guarantees drift. Overruled on purpose -- the Go dependency is being deprecated, and a build that cannot run its acceptance suite without cloning the implementation it replaced is not finished. tests/reference/README.md records what the drift now costs and that those expectations are never edited. Checked rather than assumed: both configurations configure, build and pass from scratch with deps/basicinterpret moved out of the tree entirely. The submodule is kept as the behavioural spec, which is a real use. The font came with an open licence question; assets/fonts/PROVENANCE.md states it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
23
TODO.md
23
TODO.md
@@ -354,10 +354,23 @@ and the only path that existed — `AKBASIC_MODE_RUNSTREAM` reading through the
|
||||
is the code the README quotes, built by every build and registered as a CTest case so a
|
||||
signature change breaks the build rather than rotting the document.
|
||||
|
||||
**The acceptance suite is the reference's own corpus, driven in place.** All 41 `.bas` files
|
||||
under `deps/basicinterpret/tests/` are registered as individual CTest cases and byte-compared
|
||||
against their `.txt` — including the trailing double newline on an error line (§1.8). Nothing
|
||||
is copied, so the corpus cannot drift from its upstream.
|
||||
**The acceptance suite is the reference's own corpus, checked in at `tests/reference/`.** All
|
||||
41 `.bas` files are registered as individual CTest cases and byte-compared against their `.txt`
|
||||
— including the trailing double newline on an error line (§1.8).
|
||||
|
||||
It was driven *in place* out of `deps/basicinterpret` until 2026-07-31, on the reasoning that
|
||||
copying a submodule's corpus guarantees drift. That reasoning was sound and was overruled
|
||||
deliberately: the Go dependency is being deprecated, and a build that cannot run its own
|
||||
acceptance suite without cloning the implementation it replaced is not finished. The copy is
|
||||
byte-identical to `basicinterpreter@d76162c`, and `tests/reference/README.md` records the
|
||||
provenance, the cost of the drift nobody is watching for now, and the rule that those
|
||||
expectations are never edited to suit this interpreter.
|
||||
|
||||
**Nothing in the build or the suite needs `deps/basicinterpret` any more**, and that is checked
|
||||
rather than assumed — both configurations were configured, built and run from scratch with the
|
||||
submodule moved out of the tree. The Commodore font moved too, to `assets/fonts/`, which was the
|
||||
other thing tying the build to it; `assets/fonts/PROVENANCE.md` carries the licence question that
|
||||
came with it.
|
||||
|
||||
Eighteen unit tests cover the modules the corpus cannot reach on its own.
|
||||
`tests/known_reference_defects.c` is registered in `AKBASIC_KNOWN_FAILING_TESTS` and asserts
|
||||
@@ -1037,7 +1050,7 @@ entire test corpus and passes clean under ASan and UBSan.
|
||||
|---|---|
|
||||
| `ctest` | 76/76 — 41 upstream golden cases, 9 local ones, 23 unit tests, 2 embedding examples, 1 known-failing |
|
||||
| `ctest` with `-DAKBASIC_WITH_AKGL=ON` | 75/75 — the same, minus the three `no_device` cases the SDL driver contradicts, plus `akgl_backends` and `akgl_frontend`; the `akgl_build` CI job |
|
||||
| Golden corpus | 41/41 byte-exact, driven in place from the submodule — **and 41/41 again through the SDL binary**, which is most of what proves the frontend changes no output |
|
||||
| Golden corpus | 41/41 byte-exact from `tests/reference/` — **and 41/41 again through the SDL binary**, which is most of what proves the frontend changes no output |
|
||||
| ASan + UBSan | 76/76 |
|
||||
| Line coverage | 94.6% (3857/4076) — above the 90% gate |
|
||||
| Function coverage | 98.6% (287/291) |
|
||||
|
||||
Reference in New Issue
Block a user