From 1d120289d1a9cb3016e1cb60707696cf02f681fb Mon Sep 17 00:00:00 2001 From: damocles Date: Thu, 8 Oct 2026 00:41:29 +0200 Subject: [PATCH] hive-c0re: extract read_from so the prune_unknown test exercises the real wiring --- hive-c0re/src/agent_config/tool_groups.rs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/hive-c0re/src/agent_config/tool_groups.rs b/hive-c0re/src/agent_config/tool_groups.rs index 91636d46..ae7ccc6e 100644 --- a/hive-c0re/src/agent_config/tool_groups.rs +++ b/hive-c0re/src/agent_config/tool_groups.rs @@ -41,7 +41,11 @@ pub fn tool_groups_path() -> PathBuf { /// honoured — but `read` itself never writes; unknown names stay on disk /// until the next `set_groups` rewrites the file. pub fn read() -> std::io::Result>> { - let mut map = super::read_map(&tool_groups_path())?; + read_from(&tool_groups_path()) +} + +fn read_from(path: &Path) -> std::io::Result>> { + let mut map = super::read_map(path)?; prune_unknown(&mut map); Ok(map) } @@ -214,16 +218,15 @@ mod tests { } #[test] - fn read_drops_an_unknown_name_still_on_disk_without_rewriting_the_file() { + fn read_from_drops_an_unknown_name_still_on_disk_without_rewriting_the_file() { let dir = tempfile::tempdir().expect("tempdir"); let path = dir.path().join(TOOL_GROUPS_FILE); std::fs::write(&path, r#"{"alice": ["messaging", "diagnostics"]}"#).expect("seed"); - let map: BTreeMap> = { - let mut m = crate::agent_config::read_map(&path).expect("read"); - prune_unknown(&mut m); - m - }; + // Exercises `read()`'s own wiring, not a hand-rolled equivalent — + // deleting the `prune_unknown` call inside `read_from` must fail + // this assertion. + let map = read_from(&path).expect("read_from"); assert_eq!(map["alice"], vec!["messaging".to_owned()]); // `read()` itself never writes — the stale name is still on disk.