diff --git a/include/loot/metadata/plugin_metadata.h b/include/loot/metadata/plugin_metadata.h index 80408dd4..4f6fc825 100644 --- a/include/loot/metadata/plugin_metadata.h +++ b/include/loot/metadata/plugin_metadata.h @@ -180,6 +180,11 @@ public: */ LOOT_API void SetGroup(const std::string& group); + /** + * Unsets the plugin's group. + */ + LOOT_API void UnsetGroup(); + /** * Set the files that the plugin must load after. * @param after diff --git a/src/api/metadata/plugin_metadata.cpp b/src/api/metadata/plugin_metadata.cpp index f29aa379..f820f1cf 100644 --- a/src/api/metadata/plugin_metadata.cpp +++ b/src/api/metadata/plugin_metadata.cpp @@ -220,6 +220,10 @@ void PluginMetadata::SetGroup(const std::string& group) { group_ = group; } +void PluginMetadata::UnsetGroup() { + group_ = std::nullopt; +} + void PluginMetadata::SetLoadAfterFiles(const std::set& l) { loadAfter_ = l; } diff --git a/src/tests/api/internals/metadata/plugin_metadata_test.h b/src/tests/api/internals/metadata/plugin_metadata_test.h index 488a27fd..91984506 100644 --- a/src/tests/api/internals/metadata/plugin_metadata_test.h +++ b/src/tests/api/internals/metadata/plugin_metadata_test.h @@ -476,6 +476,17 @@ TEST_P(PluginMetadataTest, simpleMessagesShouldReturnMessagesAsSimpleMessages) { EXPECT_EQ("content3", simpleMessages.back().text); } +TEST_P(PluginMetadataTest, unsetGroupShouldLeaveNoGroupValueSet) { + PluginMetadata plugin; + EXPECT_FALSE(plugin.GetGroup().has_value()); + + plugin.SetGroup("test"); + EXPECT_EQ("test", plugin.GetGroup().value()); + + plugin.UnsetGroup(); + EXPECT_FALSE(plugin.GetGroup().has_value()); +} + TEST_P(PluginMetadataTest, hasNameOnlyShouldBeTrueForADefaultConstructedPluginMetadataObject) { PluginMetadata plugin;