diff --git a/src/metadata/metadata_document.rs b/src/metadata/metadata_document.rs index 2e09f08f..9dd6dd31 100644 --- a/src/metadata/metadata_document.rs +++ b/src/metadata/metadata_document.rs @@ -348,7 +348,8 @@ impl MetadataDocument { // Only remove regex plugins if no specific plugin was removed, because // they're mutually exclusive. if removed.is_none() { - self.regex_plugins.retain(|p| p.name() != plugin_name); + self.regex_plugins + .retain(|p| !unicase::eq(p.name(), plugin_name)); } } @@ -1113,6 +1114,29 @@ plugins: assert!(metadata.find_plugin(name).unwrap().is_none()); } + #[test] + fn remove_plugin_metadata_should_remove_regex_entries_comparing_names_case_insensitively() { + let mut metadata = MetadataDocument::default(); + + let regex_name = "Blank.*\\.esp"; + + let mut plugin = PluginMetadata::new(regex_name).unwrap(); + plugin.set_load_after_files(vec![File::new("A".to_owned())]); + metadata.set_plugin_metadata(plugin.clone()); + + let mut plugin = PluginMetadata::new(regex_name).unwrap(); + plugin.set_load_after_files(vec![File::new("B".to_owned())]); + metadata.set_plugin_metadata(plugin.clone()); + + let name = "Blank.esp"; + + assert!(metadata.find_plugin(name).unwrap().is_some()); + + metadata.remove_plugin_metadata("blank.*\\.esp"); + + assert!(metadata.find_plugin(name).unwrap().is_none()); + } + #[test] fn remove_plugin_metadata_should_not_remove_matching_regex_plugin_metadata() { let mut metadata = MetadataDocument::default();