Skip to content

Commit 1cb895a

Browse files
fjtrujyclaude
andcommitted
docs: openvcl 42 → 55 tests (Parser family suite); flag uninit-read bug
openvcl@acc1ba6 added 13 Parser-side cases covering one positive per VU operand family (FMAC, FDIV, LSU, IALU, BRU, RANDU, EFU) and four error-recovery negatives. Refresh TL;DR, the "infrastructure landed" bullet, and §2.4 to reflect the new total and mark the Parser row ✅. The Tokenizer argument-list row is bumped from "open" to "partial" because the Parser tests transitively cover broadcast (`MULw`), post-inc `(vi++)`, and `imm(vi)` addressing; pre-dec, `i`/`q`/`p`/`r` immediate operands, and indirect zero-form `(vi)` are still open. Adds a new openvcl TODO line at the end of §3: writing the family tests surfaced a latent error-propagation gap — the "Read-attempt from uninitialized float register" path prints to stderr but does not bump Error::m_errorCount, so openvcl exits 0 anyway. Sibling of the bug that commit 5c0227b fixed for CLIP. The Parser tests work around it by checking stderr substrings instead of exit_code on positives. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent ccf8961 commit 1cb895a

1 file changed

Lines changed: 19 additions & 8 deletions

File tree

INTEGRATION_PLAN.md

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,21 @@ minimal repro committed.
2525
bug discovered during test densification. See §2.3.
2626
4. 🟡 **More unit tests** for masp + openvcl, especially per-module coverage.
2727
masp side: sb / hash / number-prefix landed 2026-05-11 (3 new test
28-
binaries, 57 cases). openvcl side: 17 → 42 cases — tokenizer suite
29-
landed 2026-05-11 (`openvcl@edc5b76`). See §2.4.
28+
binaries, 57 cases). openvcl side: 17 → 55 cases — tokenizer suite
29+
(`openvcl@edc5b76`) + Parser operand-family / error-recovery suite
30+
(`openvcl@acc1ba6`) both landed 2026-05-11. See §2.4.
3031

3132
**Workarounds & infrastructure landed this session:**
3233
- `-DPS2GL_USE_SCE_VSM=ON` — bypasses openvcl, assembles Sony's reference VSMs
3334
directly. Diagnostic + temporary workaround. (`ps2gl@cmake` commit `316cd91`)
3435
- `vsm_diff.py` semantic diff harness + per-renderer CTest entries. All 12
3536
WILL_FAIL today; XPASS-flips as renderers converge. (`ps2gl@cmake` commit
3637
`9138e1f`)
37-
- openvcl unit + integration test framework. 42 tests (17 originally,
38-
+25 from the Tokenizer suite), 0 failures.
39-
(`openvcl@ps2gl` commits `7f1db90`, `de7f1f8`, `bec6b7f`, `edc5b76`)
38+
- openvcl unit + integration test framework. 55 tests (17 originally,
39+
+25 from the Tokenizer suite, +13 from the Parser family/error suite),
40+
0 failures.
41+
(`openvcl@ps2gl` commits `7f1db90`, `de7f1f8`, `bec6b7f`, `edc5b76`,
42+
`acc1ba6`)
4043

4144
---
4245

@@ -194,7 +197,7 @@ per-module tests are easy. Targets:
194197
| Conditional assembly | `\ifmode` / `\ifm` / `\endifm` truth tables | open |
195198
| Golden files | Re-run every `ps2gl/vu1/*.vcl` through masp; compare to checked-in expected output | open |
196199

197-
**openvcl** — has 42 tests across `unit/` and `integration/` (was 17
200+
**openvcl** — has 55 tests across `unit/` and `integration/` (was 17
198201
before 2026-05-11). Hand-rolled harness in `test/include/test_harness.h`
199202
(TEST_CASE / CHECK / REQUIRE / EXPECTED_FAIL, auto-registered via
200203
static init). Subprocess runner in `test/include/openvcl_runner.h` for
@@ -203,8 +206,8 @@ end-to-end checks. Targets to expand:
203206
| Area | Effort | Status |
204207
| ------------------------------------------------- | ------ | ------ |
205208
| Tokenizer: comments, fields, bit-flags, labels | ½ day | ✅ 25 cases in `test_tokenizer.cpp` (`openvcl@edc5b76`) — case-insensitive mnemonic lookup and `.xyzw`→0 normalisation pinned with comments |
206-
| Tokenizer: argument-list parsing for FMAC/LSU forms | ½ day | open (broadcast, indirect, post-inc, immediate operands) |
207-
| Parser: operand templates, error recovery | ½ day | open |
209+
| Tokenizer: argument-list parsing for FMAC/LSU forms | ½ day | partial — broadcast (`MULw`), post-inc (`(vi++)`) and `imm(vi)` addressing covered by Parser family tests (`openvcl@acc1ba6`); still open: pre-dec, `i`/`q`/`p`/`r` immediate operands, indirect `(vi)` zero-form |
210+
| Parser: operand templates, error recovery | ½ day | ✅ 13 cases in `test_parser_families.cpp` (`openvcl@acc1ba6`) — one positive per VU family (FMAC, FDIV, LSU, IALU, BRU, RANDU, EFU) + negatives for unknown mnemonic, wrong arg count, out-of-range register, family mismatch |
208211
| Expression: edge cases (some landed) | started | partial |
209212
| CodeGenerator golden files per mnemonic family | 1 day | open |
210213
| CommandLine: every flag in README | ½ day | open |
@@ -255,6 +258,14 @@ allocator, CLIP validation, `.init_vf` range. All with regression tests.
255258
- Output-parameters only applied at "proper" branch exits (vague spec)
256259
- GASP preparsing doesn't track filenames (low priority)
257260
- *Plus the new quad-renderer bug* — filed, repro committed.
261+
- **Error propagation gap** discovered 2026-05-11 while densifying Parser
262+
tests: `"Read-attempt from uninitialized float register"` prints to
263+
stderr but does NOT bump `Error::m_errorCount`, so the process exits
264+
0 instead of failing. Sibling of the bug commit `5c0227b` already
265+
fixed for CLIP. Cheap fix: route this code path through
266+
`Error::Display` (or directly increment the counter). Parser tests
267+
in `test_parser_families.cpp` deliberately check stderr substrings
268+
instead of exit_code on positives, so they're not blocked by this.
258269

259270
---
260271

0 commit comments

Comments
 (0)