From 9adab6882d31e684b9f0d410943b039124b1ecc9 Mon Sep 17 00:00:00 2001 From: Nils Andreas Svee Date: Wed, 13 May 2026 22:01:50 +0700 Subject: [PATCH] test(cli): add tests for interrupted continuous mode summary --- crates/irtt-cli/src/main.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/crates/irtt-cli/src/main.rs b/crates/irtt-cli/src/main.rs index 6451bc7..d173565 100644 --- a/crates/irtt-cli/src/main.rs +++ b/crates/irtt-cli/src/main.rs @@ -366,6 +366,14 @@ mod shutdown_tests { assert!(!should_drain_final(true, false)); assert!(should_drain_final(false, false)); } + + #[test] + fn final_summary_gate_prints_finite_or_interrupted_continuous() { + assert!(should_print_final_summary(false, false)); + assert!(should_print_final_summary(false, true)); + assert!(!should_print_final_summary(true, false)); + assert!(should_print_final_summary(true, true)); + } } #[cfg(all(test, feature = "stats"))] @@ -495,6 +503,28 @@ mod tests { assert!(out.is_empty()); } + #[test] + fn continuous_interrupted_output_prints_bounded_summary_when_enabled() { + let mut stats = StatsCollector::new(StatsConfig::continuous()); + let mut out = Vec::new(); + { + let mut output = EventOutput { + mode: irtt_cli::OutputMode::Human, + human_options: HumanOutputOptions::default(), + print_final_summary: true, + out: &mut out, + stats: &mut stats, + }; + output.print_event(&reply_event(1, 1200)).unwrap(); + output.print_summary().unwrap(); + } + + let rendered = String::from_utf8(out).unwrap(); + assert!(rendered.contains("irtt-rs summary")); + assert!(rendered.contains("packets:")); + assert!(rendered.contains("received=1")); + } + #[test] fn human_output_prints_ipdv_from_stats_update() { let events = [reply_event(0, 1200), reply_event(1, 1250)];