test: no daemon test drives DECSET 2048 through the real parser/drain_effects/reconcile wiring #213
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#213
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?
All three new
session_task2048 tests use theset_mode_2048helper(
crates/felis-daemon/src/session_task.rs, around line 3516), which builds a freshfelis_vt::Parserand callsparser.advancedirectly on the locked grid, then callstask.sync_resize_notify_to_pty()by hand — bypassingSessionTask::drain_effectsentirely, which is the code path that actually sets
resize_notify_dirty(around line1662) when real PTY input is parsed.
No test exercises the true production trigger: a DECSET 2048 written to the real PTY
causing the run loop's own
drain_effects->reconcilesequence to fire.This mirrors the pre-existing test convention for mode 2031
(
mode_2031_reports_effective_scheme_changes_before_the_keystroke, around line 3072,does the identical direct-parser bypass), so it is not a novel style gap. But it does
mean the acceptance criterion "answers the set with one immediate report" is pinned only
at the unit level and never through the actual I/O wiring a real client exercises.
Correction: add one daemon test that writes the raw escape bytes through the session's
real input path (the same path
press_key/resize_touse) so thedrain_effects->resize_notify_dirty->reconcilechain is exercised end to end atleast once.
Reason deferred from #189: it mirrors the pre-existing mode 2031 convention, is not a
regression introduced by that change, and the stated acceptance criteria are met at the
unit level. A real coverage gap worth its own ticket rather than a blocker on that PR.
Split from #189.