Watch
0
0
Fork
You've already forked hyperhive
0

lifecycle: leak the stop-failed warning kind once per agent

Closes #6096
This commit is contained in:
atlas 2026-11-06 03:07:50 +01:00 • committed by mara
commit 32af7e0639

View file

@ -422,3 +422,27 @@ fn a_build_without_a_log_row_has_an_empty_build_id() {
assert_eq!(field(&logged[0].1, "build_id"), Some(""));
assert_eq!(field(&logged[0].1, "agent"), Some("alice"));
}
#[test]
fn stop_kind_is_leaked_once_per_agent() {
let first = stop_kind("stopkind-a");
assert_eq!(first, "agent_stop_failed_stopkind-a");
assert!(std::ptr::eq(first, stop_kind("stopkind-a")));
assert!(!std::ptr::eq(first, stop_kind("stopkind-b")));
}
#[test]
fn stop_kind_survives_a_clean_stop_between_failures() {
let failed = |guards: &mut std::collections::HashMap<_, _>| {
let kind = stop_kind("stopkind-c");
guards.insert(
"stopkind-c".to_owned(),
crate::warnings::set_warning(kind, "crit", "stop failed"),
);
kind
};
let mut guards = std::collections::HashMap::new();
let first = failed(&mut guards);
guards.remove("stopkind-c");
assert!(std::ptr::eq(first, failed(&mut guards)));
}