Parent
Epic: #426
Summary
Filter cargo test and cargo nextest run output to show only failures, error details, and summary line. Passing tests are omitted.
Expected Savings
94-99% reduction on green test suites, 60-80% on mixed results.
Behavior
Input (raw cargo test output):
running 150 tests
test config::tests::parse_default ... ok
test config::tests::parse_override ... ok
... (148 more ok lines)
test agent::tests::tool_loop ... FAILED
failures:
---- agent::tests::tool_loop stdout ----
thread 'agent::tests::tool_loop' panicked at 'assertion failed'
note: run with `RUST_BACKTRACE=1`
failures:
agent::tests::tool_loop
test result: FAILED. 149 passed; 1 failed; 0 ignored
Output (filtered):
test agent::tests::tool_loop ... FAILED
---- agent::tests::tool_loop stdout ----
thread 'agent::tests::tool_loop' panicked at 'assertion failed'
test result: FAILED. 149 passed; 1 failed; 0 ignored
All-pass case:
test result: ok. 150 passed; 0 failed; 0 ignored
Implementation
TestOutputFilter implementing OutputFilter
- State machine: IDLE → TEST_LINES → FAILURE_BLOCK → SUMMARY
- Matches:
cargo test, cargo nextest run, cargo nextest r
- On exit_code 0: emit only summary line
- On exit_code != 0: emit failed test names, failure details, summary
Acceptance Criteria
Parent
Epic: #426
Summary
Filter
cargo testandcargo nextest runoutput to show only failures, error details, and summary line. Passing tests are omitted.Expected Savings
94-99% reduction on green test suites, 60-80% on mixed results.
Behavior
Input (raw cargo test output):
Output (filtered):
All-pass case:
Implementation
TestOutputFilterimplementingOutputFiltercargo test,cargo nextest run,cargo nextest rAcceptance Criteria