mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Fix group handling in PluginMetadata::NewMetadata()
This commit is contained in:
@@ -108,6 +108,13 @@ PluginMetadata PluginMetadata::NewMetadata(const PluginMetadata& plugin) const {
|
||||
|
||||
PluginMetadata p(*this);
|
||||
|
||||
if (!p.IsGroupExplicit()) {
|
||||
p.group_ = plugin.group_;
|
||||
}
|
||||
if (p.group_ == plugin.group_) {
|
||||
p.isGroupExplicit_ = false;
|
||||
}
|
||||
|
||||
// Compare this plugin against the given plugin.
|
||||
set<File> filesDiff;
|
||||
set_difference(begin(loadAfter_),
|
||||
|
||||
@@ -290,6 +290,47 @@ TEST_P(PluginMetadataTest, newMetadataShouldUseSourcePluginEnabledState) {
|
||||
EXPECT_FALSE(newMetadata.IsEnabled());
|
||||
}
|
||||
|
||||
TEST_P(PluginMetadataTest, newMetadataShouldUseSourcePluginGroupExplicitlyIfItIsExplicit) {
|
||||
PluginMetadata plugin1;
|
||||
PluginMetadata plugin2;
|
||||
|
||||
plugin1.SetGroup("group1");
|
||||
plugin2.SetGroup("group2");
|
||||
|
||||
PluginMetadata newMetadata = plugin1.NewMetadata(plugin2);
|
||||
|
||||
EXPECT_EQ("group1", newMetadata.GetGroup());
|
||||
EXPECT_TRUE(newMetadata.IsGroupExplicit());
|
||||
}
|
||||
|
||||
TEST_P(PluginMetadataTest,
|
||||
newMetadataShouldUseGivenPluginGroupImplicitlyIfTheSourcePluginGroupIsNotExplicit) {
|
||||
PluginMetadata plugin1;
|
||||
PluginMetadata plugin2;
|
||||
|
||||
plugin2.SetGroup("group2");
|
||||
|
||||
PluginMetadata newMetadata = plugin1.NewMetadata(plugin2);
|
||||
|
||||
EXPECT_EQ("group2", newMetadata.GetGroup());
|
||||
EXPECT_FALSE(newMetadata.IsGroupExplicit());
|
||||
}
|
||||
|
||||
TEST_P(
|
||||
PluginMetadataTest,
|
||||
newMetadataShouldUseSourcePluginGroupImplicitlyIfTheGroupsAreTheSame) {
|
||||
PluginMetadata plugin1;
|
||||
PluginMetadata plugin2;
|
||||
|
||||
plugin1.SetGroup("group1");
|
||||
plugin2.SetGroup("group1");
|
||||
|
||||
PluginMetadata newMetadata = plugin1.NewMetadata(plugin2);
|
||||
|
||||
EXPECT_EQ("group1", newMetadata.GetGroup());
|
||||
EXPECT_FALSE(newMetadata.IsGroupExplicit());
|
||||
}
|
||||
|
||||
TEST_P(PluginMetadataTest,
|
||||
newMetadataShouldOutputLoadAfterDataThatAreNotCommonToBothInputPlugins) {
|
||||
PluginMetadata plugin1;
|
||||
@@ -460,8 +501,7 @@ TEST_P(PluginMetadataTest,
|
||||
EXPECT_TRUE(plugin.HasNameOnly());
|
||||
}
|
||||
|
||||
TEST_P(PluginMetadataTest,
|
||||
hasNameOnlyShouldBeFalseIfTheGroupIsExplicit) {
|
||||
TEST_P(PluginMetadataTest, hasNameOnlyShouldBeFalseIfTheGroupIsExplicit) {
|
||||
PluginMetadata plugin;
|
||||
plugin.SetGroup("group");
|
||||
|
||||
@@ -585,16 +625,16 @@ TEST_P(PluginMetadataTest,
|
||||
TEST_P(PluginMetadataTest,
|
||||
emittingAsYamlShouldOutputAPluginOmittingAnImplicitGroup) {
|
||||
PluginMetadata plugin(blankEsm);
|
||||
plugin.SetLoadAfterFiles({ File(blankEsm) });
|
||||
plugin.SetLoadAfterFiles({File(blankEsm)});
|
||||
|
||||
YAML::Emitter emitter;
|
||||
emitter << plugin;
|
||||
|
||||
EXPECT_STREQ(
|
||||
"name: 'Blank.esm'\n"
|
||||
"after:\n"
|
||||
" - 'Blank.esm'",
|
||||
emitter.c_str());
|
||||
"name: 'Blank.esm'\n"
|
||||
"after:\n"
|
||||
" - 'Blank.esm'",
|
||||
emitter.c_str());
|
||||
}
|
||||
|
||||
TEST_P(PluginMetadataTest,
|
||||
@@ -606,9 +646,9 @@ TEST_P(PluginMetadataTest,
|
||||
emitter << plugin;
|
||||
|
||||
EXPECT_STREQ(
|
||||
"name: 'Blank.esm'\n"
|
||||
"group: 'group1'",
|
||||
emitter.c_str());
|
||||
"name: 'Blank.esm'\n"
|
||||
"group: 'group1'",
|
||||
emitter.c_str());
|
||||
}
|
||||
|
||||
TEST_P(
|
||||
|
||||
Reference in New Issue
Block a user