diff --git a/crates/diffguard-core/src/check.rs b/crates/diffguard-core/src/check.rs index 37dd641f..8513cb25 100644 --- a/crates/diffguard-core/src/check.rs +++ b/crates/diffguard-core/src/check.rs @@ -79,6 +79,8 @@ pub enum PathFilterError { glob: String, source: globset::Error, }, + #[error("failed to build path filter glob set: {source}")] + GlobSetBuild { source: globset::Error }, } /// Run a policy check over a unified diff text. @@ -265,7 +267,8 @@ fn compile_filter_globs(globs: &[String]) -> Result { })?; b.add(glob); } - Ok(b.build().expect("globset build should succeed")) + b.build() + .map_err(|source| PathFilterError::GlobSetBuild { source }) } /// Filter a rule based on tag criteria in the plan. @@ -436,6 +439,9 @@ mod tests { let err = compile_filter_globs(&["[".to_string()]).unwrap_err(); match err { PathFilterError::InvalidGlob { glob, .. } => assert_eq!(glob, "["), + PathFilterError::GlobSetBuild { .. } => { + panic!("expected InvalidGlob, got GlobSetBuild") + } } }