From 22b576999f6ab06bf0186a67bab1cd0ed22a84df Mon Sep 17 00:00:00 2001 From: teknium1 <127238744+teknium1@users.noreply.github.com> Date: Wed, 16 Sep 2026 10:30:04 -0700 Subject: [PATCH] test(installer): fold the strip_ansi cases into one invariant table MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Seven near-identical #[test] fns become one table test over the same inputs (SGR banners, cursor/erase/private modes, OSC with BEL and ST, \r redraws, sequences cut by the pipe, plain multi-byte text) plus the existing sanitized_for_ui_only_touches_log_lines. Same coverage, two tests: the salvage bar is ≤2 invariant tests per fix. Verified with the function and tests extracted into a standalone `rustc --test` binary (cargo test on this host fails in libdbus-sys, a missing system header unrelated to this crate's code). --- .../src-tauri/src/events.rs | 83 +++++++------------ 1 file changed, 29 insertions(+), 54 deletions(-) diff --git a/apps/bootstrap-installer/src-tauri/src/events.rs b/apps/bootstrap-installer/src-tauri/src/events.rs index 62fc243a36..45dd76df32 100644 --- a/apps/bootstrap-installer/src-tauri/src/events.rs +++ b/apps/bootstrap-installer/src-tauri/src/events.rs @@ -194,61 +194,36 @@ pub(crate) fn strip_ansi(line: &str) -> String { mod tests { use super::*; + /// #112675: the Setup app's Live output pane has no terminal emulator, so + /// every escape form install.sh and its children emit into the pipe must + /// come out as the text a terminal would be left showing. #[test] - fn strips_sgr_color_sequences() { - // The colored checkmark banners from install.sh seen in #112675. - assert_eq!( - strip_ansi("\u{1b}[0;32m✓\u{1b}[0m Detected: macos (macos)"), - "✓ Detected: macos (macos)" - ); - } - - #[test] - fn strips_cursor_movement_and_private_modes() { - assert_eq!( - strip_ansi("\u{1b}[2K\u{1b}[1GCloning repository…"), - "Cloning repository…" - ); - assert_eq!(strip_ansi("down\u{1b}[?25lloading"), "downloading"); - } - - #[test] - fn strips_osc_title_commands_with_bel_and_st_terminators() { - assert_eq!( - strip_ansi("\u{1b}]0;hermes\u{07}Installing Hermes"), - "Installing Hermes" - ); - assert_eq!( - strip_ansi("\u{1b}]2;hermes\u{1b}\\Installing Hermes"), - "Installing Hermes" - ); - } - - #[test] - fn carriage_return_redraws_keep_the_last_frame() { - // curl-style progress rewrites one line in place with \r. - assert_eq!(strip_ansi("\r 12%\r 67%\r100%"), "100%"); - assert_eq!( - strip_ansi("Resolving dependencies…\r"), - "Resolving dependencies…" - ); - assert_eq!(strip_ansi("\r\r"), ""); - } - - #[test] - fn keeps_plain_and_multibyte_text_verbatim() { - assert_eq!( - strip_ansi("Installed 12 packages in 1.2s"), - "Installed 12 packages in 1.2s" - ); - assert_eq!(strip_ansi("Ready — café ✓ 中文"), "Ready — café ✓ 中文"); - assert_eq!(strip_ansi(""), ""); - } - - #[test] - fn drops_an_unterminated_sequence_cut_by_the_pipe() { - assert_eq!(strip_ansi("ok\u{1b}[0;3"), "ok"); - assert_eq!(strip_ansi("ok\u{1b}"), "ok"); + fn strip_ansi_leaves_only_the_text_a_terminal_would_show() { + for (raw, clean) in [ + // SGR colour banners around the checkmarks (the reporter's screenshot). + ( + "\u{1b}[0;32m✓\u{1b}[0m Detected: macos (macos)", + "✓ Detected: macos (macos)", + ), + // Cursor / erase / private-mode sequences. + ("\u{1b}[2K\u{1b}[1GCloning repository…", "Cloning repository…"), + ("down\u{1b}[?25lloading\u{1b}[K", "downloading"), + // OSC title commands, BEL- and ST-terminated. + ("\u{1b}]0;hermes\u{07}Installing Hermes", "Installing Hermes"), + ("\u{1b}]2;hermes\u{1b}\\Installing Hermes", "Installing Hermes"), + // \r in-place redraws collapse to the last visible frame. + ("\r 12%\r 67%\r100%", "100%"), + ("Resolving dependencies…\r", "Resolving dependencies…"), + ("\r\r", ""), + // A sequence cut by the pipe is dropped, not leaked. + ("ok\u{1b}[0;3", "ok"), + ("ok\u{1b}", "ok"), + // Plain and multi-byte text is untouched. + ("Ready — café ✓ 中文", "Ready — café ✓ 中文"), + ("", ""), + ] { + assert_eq!(strip_ansi(raw), clean, "input {raw:?}"); + } } #[test]