test: pin the OSC 4/5 refusal and OSC 13-19 no-op behavior at the dispatch layer #201
Labels
No labels
priority/P0
priority/P1
priority/P2
release/v0.1.0
status/blocked
status/planned
type/bug
type/design
type/test-gap
type/tracker
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
natsukium/felis#201
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
docs/reference/protocols/vt-compliance.mdnow states normatively that a refused colorimetric spec through OSC 4/5 leaves the addressed slot unchanged and emits no reply, and that OSC 13-19 are accepted-and-ignored regardless of spec form. Both claims check out by reading the code (dispatch_osc_palette_set_or_queryanddispatch_osc_dynamic_colorcontinueon aNonefromparse_x_colorincrates/felis-grid/src/osc_dispatch.rs, and codes 13-19 fall through the_ => {}arm incrates/felis-grid/src/sink.rs's OSC match), but no test in the tree exercises either path.crates/felis-grid/src/osc_color/tests.rsonly pins rejection at the parser layer (parse_x_colorreturningNonefor CIELab/rgbi text). Greppingcrates/felis-grid/tests/andcrates/felis-grid/src/turns up no OSC 4/5 dispatch test that sends a rejected spec and asserts the existing slot value is preserved with no reply emitted, nor any test sending OSC 13-19 and asserting no state change and no reply.The documented dispatch-level guarantee is therefore unpinned at the layer where it matters: a future change to the
continue/no-op branches inosc_dispatch.rswould silently violate the documented contract with no test failing.Correction: add a dispatch-level test (or extend an existing OSC 4/5 integration test) asserting that a refused colorimetric spec (e.g.
\x1b]4;0;CIELab:1/1/1\x1b\\) leaves a previously-set slot's value unchanged and produces no OSC reply, plus a companion test that an OSC 13-19 sequence with any spec form produces no state change and no reply.Deferred from #182 because the existing parser-layer test covers the rejection and that issue's plan called for no new tests; the dispatch-level gap is real but orthogonal to recording the non-goal.
Split from #182.