[v0.1.x/CLI] Cover the bridge's stdout-loss path beside the golden conversations #166
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#166
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?
Why
The golden
felis bridgeconversations landed in #29 cover the cleanterminal, the failing terminal before the first item, cancel, and
daemon loss (
crates/felis-cli/tests/fixtures/bridge/). The fifthscenario the plan named, stdout loss, is not among them.
What was found
The golden harness (
run_goldenincrates/felis-cli/tests/cli_bridge.rs) is defined by the stdout linesa conversation produces: it feeds the
inlines, collects one reply orterminal per request, and diffs the normalized transcript. A stdout
loss produces no stdout at all — the bridge stops every operation,
closes every daemon link, and exits
1without a correlated error,because the channel that would carry one is the channel that failed
(
docs/reference/cli.md, "Other verbs"). There is nothing for theharness to diff, so the scenario needs a different assertion shape
(reader closed early, then exit code and the absence of further
output).
Why it is out of scope for #29
#29's acceptance criteria are the schema bundle, the fixture
validation, deterministic regeneration in CI, and golden coverage of
reordered concurrent replies and every terminal path. Stdout loss has
no terminal: it is an exit-code behavior, and adding a second harness
shape for it would not have made the schemas or the terminals better
covered.
What the follow-up should do
cli_bridge.rstest that drops the read end of the bridge'sstdout while an operation is in flight and asserts exit
1, nofurther stdout, and that stderr stays human-only.
plain assertion test; if the former, extend the fixture format with a
directive for closing the reader.
Split from #29.