Record the real coverage numbers, and how they were nearly misreported
93.5% of lines and 97.8% of functions, up from 92.3% and 96.9% across roughly 800 new lines. The verb groups added for goal 2 carry the new surface: the two table files and runtime_input.c at 100%, runtime_graphics.c and runtime_audio.c at 98%, play.c at 87%. The first reading of that number was wrong and the reason is worth keeping. A stale build-cov/ left in the source directory by an earlier session was silently folded in by `gcovr --root .`, which reported the *previous* run's 92.3% for a tree that had grown by 800 lines -- a number that looked plausible precisely because it had not moved. That is libakgl defect #13 happening here rather than there, and build*/ being gitignored is what makes it invisible. Section 8 now says to check `find . -name '*.gcda'` before believing a coverage figure that looks suspiciously unchanged. Also documents the akgl build and test commands in the README, which had none. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
26
TODO.md
26
TODO.md
@@ -797,16 +797,30 @@ entire test corpus and passes clean under ASan and UBSan.
|
||||
|
||||
| Gate | Result |
|
||||
|---|---|
|
||||
| `ctest` | 61/61 — 41 golden cases, 17 unit tests, 2 embedding examples, 1 known-failing |
|
||||
| `ctest` | 70/70 — 41 upstream golden cases, 5 local ones, 21 unit tests, 2 embedding examples, 1 known-failing |
|
||||
| `ctest` with `-DAKBASIC_WITH_AKGL=ON` | 71/71 — the above plus `akgl_backends` |
|
||||
| Golden corpus | 41/41 byte-exact, driven in place from the submodule |
|
||||
| ASan + UBSan | 61/61 |
|
||||
| Line coverage | 92.3% (2823/3058) — above the 90% gate |
|
||||
| Function coverage | 96.9% (221/228) |
|
||||
| ASan + UBSan | 70/70 |
|
||||
| Line coverage | 93.5% (3631/3884) — above the 90% gate |
|
||||
| Function coverage | 97.8% (269/275) |
|
||||
| Warnings | none under `-Wall -Wextra` |
|
||||
| `doxygen Doxyfile` | clean; 114/114 public declarations documented |
|
||||
| `doxygen Doxyfile` | clean |
|
||||
| Mutation (`src/convert.c`, `src/symtab.c`) | see `.gitea/workflows/ci.yaml` for the current score and gate |
|
||||
|
||||
Branch coverage reads 17.3% and is not a target, for the reason `libakgl/TODO.md` and
|
||||
Coverage of the verb groups added for goal 2, since they are the new surface: `src/audio_tables.c`
|
||||
and `src/graphics_tables.c` 100%, `src/runtime_input.c` 100%, `src/runtime_graphics.c` and
|
||||
`src/runtime_audio.c` 98%, `src/play.c` 87%. The `akbasic_akgl` target is not in the coverage
|
||||
figure — it is not built in a default configuration.
|
||||
|
||||
**A note on reading that number, because it was misread once while producing it.** A stale
|
||||
`build-cov/` left in the source directory from an earlier session was silently folded into the
|
||||
report by `gcovr --root .`, which produced the *previous* run's 92.3% for a tree that had grown
|
||||
by 800 lines. That is `libakgl` defect #13 happening here rather than there, and `build*/` being
|
||||
gitignored is exactly what makes it invisible. **Keep build trees out of the source directory**,
|
||||
and if a coverage number looks suspiciously unchanged, `find . -name '*.gcda'` before believing
|
||||
it.
|
||||
|
||||
Branch coverage reads 18.0% and is not a target, for the reason `libakgl/TODO.md` and
|
||||
`libakstdlib/TODO.md` both give: the akerror control-flow macros expand into large branch trees
|
||||
at every call site, most of them unreachable in normal operation. Track line and function
|
||||
coverage.
|
||||
|
||||
Reference in New Issue
Block a user