Watch
0
0
Fork
You've already forked hyperhive
0

setup status: count steps that cannot be observed as unknown in the header

This commit is contained in:
atlas 2026-11-09 10:55:29 +01:00 • committed by mara
commit a4b9088a12

View file

@ -375,7 +375,7 @@ pub(crate) fn render(steps: &[Step], color: bool) -> String {
.count(); .count();
let unknown = steps let unknown = steps
.iter() .iter()
.filter(|s| matches!(s.status, Status::Unknown(_))) .filter(|s| matches!(s.status, Status::Unknown(_) | Status::Unobservable(_)))
.count(); .count();
let next = steps let next = steps
.iter() .iter()
@ -966,7 +966,7 @@ mod tests {
let text = render(&classify(&o), false); let text = render(&classify(&o), false);
assert!(text.contains("❓ 1 secret store initialised")); assert!(text.contains("❓ 1 secret store initialised"));
assert!(text.contains("unknown (bao is not on PATH)")); 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("next: step 1 could not be checked"));
assert!(!text.contains("👉")); assert!(!text.contains("👉"));
} }
@ -987,7 +987,7 @@ mod tests {
assert_eq!( assert_eq!(
text, text,
"\ "\
🏗️ setup: 6/8 steps done ███████░░░ 🏗️ setup: 6/8 steps done ███████░░░ ❓ 2 unknown
✅ 1 secret store initialised ✅ 1 secret store initialised
✅ 2 secret store unsealed ✅ 2 secret store unsealed
@ -1009,7 +1009,7 @@ next: step 6, setup.md § 2: `swarmctl user add <name> --email <address> --group
#[test] #[test]
fn a_complete_ceremony_ends_on_the_celebration_line() { fn a_complete_ceremony_ends_on_the_celebration_line() {
let text = render(&classify(&finished()), false); 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.ends_with("🎉 setup complete\n"));
assert!(!text.contains("next:") && !text.contains("👉")); assert!(!text.contains("next:") && !text.contains("👉"));
} }
@ -1020,7 +1020,7 @@ next: step 6, setup.md § 2: `swarmctl user add <name> --email <address> --group
o.agents = Err("no socket".to_owned()); o.agents = Err("no socket".to_owned());
let text = render(&classify(&o), false); let text = render(&classify(&o), false);
assert!( assert!(
text.starts_with("🏗️ setup: 5/8 steps done ██████░░░░ ❓ 2 unknown\n"), text.starts_with("🏗️ setup: 5/8 steps done ██████░░░░ ❓ 4 unknown\n"),
"{text}" "{text}"
); );
} }
@ -1056,6 +1056,19 @@ next: step 6, setup.md § 2: `swarmctl user add <name> --email <address> --group
assert!(!color_wanted(true, Some(OsStr::new("1")))); assert!(!color_wanted(true, Some(OsStr::new("1"))));
assert!(!color_wanted(false, None)); 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] #[test]
fn the_bar_is_full_only_when_everything_is_done() { fn the_bar_is_full_only_when_everything_is_done() {
assert_eq!(bar(0, 8), "░░░░░░░░░░"); assert_eq!(bar(0, 8), "░░░░░░░░░░");