this dramatically improves time to run `cargo test -p codex-core` (~25x speedup). before: ``` cargo test -p codex-core 35.96s user 68.63s system 19% cpu 8:49.80 total ``` after: ``` cargo test -p codex-core 5.51s user 8.16s system 63% cpu 21.407 total ``` both tests measured "hot", i.e. on a 2nd run with no filesystem changes, to exclude compile times. approach inspired by [Delete Cargo Integration Tests](https://matklad.github.io/2021/02/27/delete-cargo-integration-tests.html), we move all test cases in tests/ into a single suite in order to have a single binary, as there is significant overhead for each test binary executed, and because test execution is only parallelized with a single binary.
25 lines
789 B
Rust
25 lines
789 B
Rust
//! Regression test: ensure that `StatusIndicatorWidget` sanitises ANSI escape
|
||
//! sequences so that no raw `\x1b` bytes are written into the backing
|
||
//! buffer. Rendering logic is tricky to unit‑test end‑to‑end, therefore we
|
||
//! verify the *public* contract of `ansi_escape_line()` which the widget now
|
||
//! relies on.
|
||
|
||
use codex_ansi_escape::ansi_escape_line;
|
||
|
||
#[test]
|
||
fn ansi_escape_line_strips_escape_sequences() {
|
||
let text_in_ansi_red = "\x1b[31mRED\x1b[0m";
|
||
|
||
// The returned line must contain three printable glyphs and **no** raw
|
||
// escape bytes.
|
||
let line = ansi_escape_line(text_in_ansi_red);
|
||
|
||
let combined: String = line
|
||
.spans
|
||
.iter()
|
||
.map(|span| span.content.to_string())
|
||
.collect();
|
||
|
||
assert_eq!(combined, "RED");
|
||
}
|