Skip to content

CI hygiene: gate bug-tests in CI + rename misnamed negative fixture - #24

Merged
ako merged 1 commit into
mainfrom
chore/ci-check-mdl-hygiene
Jul 24, 2026
Merged

CI hygiene: gate bug-tests in CI + rename misnamed negative fixture#24
ako merged 1 commit into
mainfrom
chore/ci-check-mdl-hygiene

Conversation

@ako

@ako ako commented Jul 24, 2026

Copy link
Copy Markdown
Owner

Two small, related example-check hygiene fixes surfaced while adding the focused fragment examples (#23). Filed as a PR because Issues are disabled on this repo.

1. CI now checks bug-tests/, not just doctype-tests/

push-test.yml's "Check MDL example scripts" step iterated only mdl-examples/doctype-tests/*.mdl, so the per-fix bug-test regression fixtures — which the repo convention requires for every bug fix — had no CI syntax gate. A broken bug-test only showed up under a local make check-mdl.

This replaces the inline loop with a call to make check-mdl, the single source of truth that already:

  • covers both doctype-tests/ and bug-tests/,
  • skips *.test.mdl (mxcli-test inputs, not check inputs),
  • inverts *.fail.mdl negative tests, and
  • honours the pre-existing-failure SKIP list.

Less duplication, and CI == local from now on.

2. Rename a misnamed negative fixture

mdl-examples/bug-tests/view-entity-derived-string-length.mdl is a negative test — its own header says it must be rejected at check time (MDL031: a derived string column normalises to String(200), so a string(30) declaration is flagged before the cryptic CE6770 at build). But it was never given the .fail.mdl suffix that make check-mdl inverts, so make check-mdl exited non-zero on a clean main checkout — masked only because CI (item 1) didn't check bug-tests/.

Renamed to view-entity-derived-string-length.fail.mdl. No content change.

Result

make check-mdl exits 0, and the fixture is reported as PASS (negative test, expected error). Fixing these in the right order (rename first, then extend CI) means turning on bug-test coverage doesn't turn CI red.

Discovered while working on the fragment content-slot / bindings PRs (#22, #23).

Generated with Claude Code


Generated by Claude Code

Two related example-check gaps (issues are disabled on the repo, so recording
as a small PR):

1. CI (push-test.yml) iterated only mdl-examples/doctype-tests/*.mdl, so the
   per-fix bug-test regression fixtures — which the repo convention requires for
   every bug fix — had no CI syntax gate. Replace the inline loop with a call to
   `make check-mdl`, the single source of truth that already covers BOTH
   doctype-tests/ and bug-tests/, skips *.test.mdl, inverts *.fail.mdl negative
   tests, and honours the pre-existing-failure SKIP list.

2. mdl-examples/bug-tests/view-entity-derived-string-length.mdl is a NEGATIVE
   test — its own header says it must be rejected at `check` time (MDL031) — but
   it was never given the `.fail.mdl` suffix that `make check-mdl` inverts, so
   `make check-mdl` exited non-zero on a clean main checkout (masked only because
   CI didn't check bug-tests). Rename it to `.fail.mdl`.

After both: `make check-mdl` exits 0 and the fixture is correctly reported as
"PASS (negative test, expected error)".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JXnEgoc2NQP1Y2TWMCMXC4
@ako
ako merged commit fb7798d into main Jul 24, 2026
3 checks passed
ako pushed a commit that referenced this pull request Jul 28, 2026
Ledger finding #24: on the modelsdk engine, a navigationlist item was
stored with an empty name, and the caption's generated DynamicText had
no name either — Studio Pro rejected the project with CE7247 "name
cannot be empty" and CE0495 "duplicate name ''".

navListItemToGen now (1) writes the item Name — the gen
NavigationListItem type has no typed Name setter, so it's added as a raw
property via addStr, mirroring the legacy writer's `Name` key — and (2)
names the caption's DynamicText `text_<item>` (same as legacy) and sets
its render mode.

Test: TestNavListItemToGen_WritesNames (encode → both names present).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JXnEgoc2NQP1Y2TWMCMXC4
ako pushed a commit that referenced this pull request Jul 29, 2026
… ledger cases

Wave 1 (MDL-WF01/02/03, MDL-BUTTON01 — cases 1/2/4/5) is shipped. Record the
~10 ledger-driven checks added on the same pattern (MDL045-049, MDL-WIDGET13/14/15,
MDL031 pass-through, view-entity association CE6771) plus the two write-path parity
fixes (#24 navlist names, #39 orphaned index), and note the two originally-
cataloged gaps that remain: case 3 (CE7412) and the standalone case-6 warn.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JXnEgoc2NQP1Y2TWMCMXC4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants