nigig-org/crates/apps/doc/doc-engine/COVERAGE.md
arena-agent 9d37874453 test(doc-engine): isolated source-coverage harness with floors
Mirror of the CAD engine harness for the doc crate, minus the shim
gymnastics (doc-engine depends only on serde/serde_json, so it
instruments directly): an isolated toolchain + cargo + target dir under
one mktemp directory, removed by a shell trap on every exit path;
nothing enters the host, the workspace target/, or $HOME. Runs the unit
tests plus tests/materialize.rs under -C instrument-coverage, enforces
a 96% total-lines floor against a 99.00% baseline plus per-file floors
(losing one module's tests must not hide in the total), and with
KEEP_COVERAGE=1 writes the uncovered-line listing that makes adding
branch tests directed rather than guesswork. COVERAGE.md records the
baseline, the exclusions, and the arms that are deliberately left
uncovered (defensive CRDT merge arms, one unreachable!, and the
Compensation::inverse arms unreachable through the public API).
2026-08-17 04:33:08 +00:00

51 lines
2.5 KiB
Markdown

# doc-engine coverage baseline
Measured by `tools/test-doc-engine-coverage.sh`, which runs the crate's
unit tests plus `tests/materialize.rs` under `-C instrument-coverage` in
a fully isolated, self-deleting environment (own toolchain, own cargo
home, everything under one `mktemp` directory removed by a shell trap).
Baseline (2026-08-17, toolchain 1.97.1, llvm-cov **lines** percent):
| File | Lines | Regions | Notes |
|---|---|---|---|
| `src/controller.rs` | 98.68% | 93.45% | remaining lines are defensive: batch-compensation arms that only fire on mid-batch op-application failure |
| `src/crdt/document.rs` | 97.63% | 95.13% | remaining arms are split-replay RGA link guards and CRDT-tolerance skips (ops whose anchors never arrive) |
| `src/crdt/operations.rs` | 100% | 100% | |
| `src/crdt/version_vector.rs` | 100% | 100% | |
| `src/history.rs` | 92.00% | 88.34% | the honest floor: `Compensation::inverse` arms unreachable through the public controller API (undo/redo expand groups before materializing) plus one `unreachable!` |
| `src/projection/text.rs` | 100% | 94.19% | |
| **TOTAL** | **99.00%** | **97.54%** | |
`src/lib.rs`, `src/session.rs`, `src/crdt/mod.rs` and `src/projection/mod.rs`
carry no executable lines (module roots and re-exports), so the report
never lists them and the floor table deliberately has no entries for
them — a floor on an unmeasured file fails the run loudly, by design.
## What is NOT measured, and why
- **Widget-level consumers.** This crate is UI-free by construction
(serde + serde_json only); the `CrdtDocEditor` surface in nigig-build
is exercised by its own 800+-test lib suite, not here. Reading
99% as "the doc feature is 99% tested" would be wrong in exactly the
way the CAD baseline warns about: it is the *engine* that is.
- **Defensive CRDT arms.** A handful of match arms exist so that ops
arriving before their anchors (or after duplicate ids) degrade
silently instead of corrupting order. Some are constructible only by
forging op ids below the controller API; they are reported as
uncovered rather than hidden.
## Floors
Total 96% lines; per-file floors a couple of points under the table
above, enforced by the script and the `coverage` job in
`.forgejo/workflows/doc-engine.yml`. Lowering a floor is a reviewable
edit to the script, not something to do quietly.
## Regenerating
```
./tools/test-doc-engine-coverage.sh # gated run
KEEP_COVERAGE=1 ./tools/test-doc-engine-coverage.sh # keeps the env and writes
# an uncovered-line listing
```