test: improved skill validation test in graph validator

This commit is contained in:
2026-06-04 14:02:34 -06:00
parent 829db30f2d
commit 8bbb166811
2 changed files with 19 additions and 18 deletions
+4 -1
View File
@@ -277,7 +277,10 @@ mod tests {
SkillPolicy::effective_with(&global, None, None, None, &always_true, &empty_installed)
.unwrap_err();
assert!(err.to_string().contains("not in visible_skills"));
assert!(
err.to_string()
.contains("not in the global 'visible_skills'")
);
assert!(err.to_string().contains("beta"));
}
+15 -17
View File
@@ -93,6 +93,7 @@ impl AgentValidationContext {
pub struct GraphValidator {
base_dir: PathBuf,
agent_ctx: Option<AgentValidationContext>,
skill_exists: fn(&str) -> bool,
}
impl GraphValidator {
@@ -100,6 +101,7 @@ impl GraphValidator {
Self {
base_dir: base_dir.into(),
agent_ctx: None,
skill_exists: paths::has_skill,
}
}
@@ -108,6 +110,12 @@ impl GraphValidator {
self
}
#[cfg(test)]
pub fn with_skill_exists(mut self, f: fn(&str) -> bool) -> Self {
self.skill_exists = f;
self
}
pub fn validate(&self, graph: &Graph) -> ValidationResult {
let mut result = ValidationResult::default();
self.validate_node_references(graph, &mut result);
@@ -196,24 +204,14 @@ impl GraphValidator {
.as_ref()
.and_then(|c| c.app_config.visible_skills.as_deref());
let skill_exists = self.skill_exists;
let check_visibility = |name: &str| -> Option<String> {
match visible_skills {
Some(list) => {
if !list.iter().any(|s| s == name) {
Some(format!(
"'{name}' is not in the global 'visible_skills' allow-list"
))
} else {
None
}
}
None => {
if !paths::has_skill(name) {
Some(format!("'{name}' is not installed"))
} else {
None
}
}
Some(list) if !list.iter().any(|s| s == name) => Some(format!(
"'{name}' is not in the global 'visible_skills' allow-list"
)),
None if !skill_exists(name) => Some(format!("'{name}' is not installed")),
_ => None,
}
};
@@ -1375,7 +1373,7 @@ mod tests {
}
fn validator() -> GraphValidator {
GraphValidator::new(env::current_dir().unwrap())
GraphValidator::new(env::current_dir().unwrap()).with_skill_exists(|_: &str| true)
}
#[test]