From a4b9088a1225ca0e4aa48d319fb1cccde91d0600 Mon Sep 17 00:00:00 2001 From: atlas Date: Mon, 9 Nov 2026 10:55:29 +0100 Subject: [PATCH] setup status: count steps that cannot be observed as unknown in the header --- swarmctl/src/setup.rs | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/swarmctl/src/setup.rs b/swarmctl/src/setup.rs index 23d252a00..9ae32e241 100644 --- a/swarmctl/src/setup.rs +++ b/swarmctl/src/setup.rs @@ -375,7 +375,7 @@ pub(crate) fn render(steps: &[Step], color: bool) -> String { .count(); let unknown = steps .iter() - .filter(|s| matches!(s.status, Status::Unknown(_))) + .filter(|s| matches!(s.status, Status::Unknown(_) | Status::Unobservable(_))) .count(); let next = steps .iter() @@ -966,7 +966,7 @@ mod tests { let text = render(&classify(&o), false); assert!(text.contains("โ“ 1 secret store initialised")); assert!(text.contains("unknown (bao is not on PATH)")); - assert!(text.starts_with("๐Ÿ—๏ธ setup: 0/8 steps done โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ โ“ 8 unknown\n")); + assert!(text.starts_with("๐Ÿ—๏ธ setup: 0/8 steps done โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ โ“ 10 unknown\n")); assert!(text.contains("next: step 1 could not be checked")); assert!(!text.contains("๐Ÿ‘‰")); } @@ -987,7 +987,7 @@ mod tests { assert_eq!( text, "\ -๐Ÿ—๏ธ setup: 6/8 steps done โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘ +๐Ÿ—๏ธ setup: 6/8 steps done โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘ โ“ 2 unknown โœ… 1 secret store initialised โœ… 2 secret store unsealed @@ -1009,7 +1009,7 @@ next: step 6, setup.md ยง 2: `swarmctl user add --email
--group #[test] fn a_complete_ceremony_ends_on_the_celebration_line() { let text = render(&classify(&finished()), false); - assert!(text.starts_with("๐Ÿ—๏ธ setup: 8/8 steps done โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ\n")); + assert!(text.starts_with("๐Ÿ—๏ธ setup: 8/8 steps done โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ“ 2 unknown\n")); assert!(text.ends_with("๐ŸŽ‰ setup complete\n")); assert!(!text.contains("next:") && !text.contains("๐Ÿ‘‰")); } @@ -1020,7 +1020,7 @@ next: step 6, setup.md ยง 2: `swarmctl user add --email
--group o.agents = Err("no socket".to_owned()); let text = render(&classify(&o), false); assert!( - text.starts_with("๐Ÿ—๏ธ setup: 5/8 steps done โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘ โ“ 2 unknown\n"), + text.starts_with("๐Ÿ—๏ธ setup: 5/8 steps done โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘ โ“ 4 unknown\n"), "{text}" ); } @@ -1056,6 +1056,19 @@ next: step 6, setup.md ยง 2: `swarmctl user add --email
--group assert!(!color_wanted(true, Some(OsStr::new("1")))); assert!(!color_wanted(false, None)); } + + #[test] + fn the_header_omits_the_unknown_count_when_nothing_is_unknown() { + let mut steps = classify(&finished()); + steps.retain(|s| !matches!(s.status, Status::Unobservable(_))); + let text = render(&steps, false); + assert!( + text.starts_with("๐Ÿ—๏ธ setup: 8/8 steps done โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ\n"), + "{text}" + ); + assert!(!text.contains("unknown")); + } + #[test] fn the_bar_is_full_only_when_everything_is_done() { assert_eq!(bar(0, 8), "โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘");