Compare regex strings case-insensitively in remove_plugin_metadata()

This commit is contained in:
Oliver Hamlet
2026-01-02 18:02:18 +00:00
parent 12a0407b4c
commit 74628bda7c
+25 -1
View File
@@ -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();