mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Remove obsolete DatabaseInterface methods
This commit is contained in:
@@ -224,47 +224,6 @@ public:
|
||||
*/
|
||||
virtual void DiscardAllUserMetadata() = 0;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @brief Outputs the Bash Tags suggested for addition and removal by the
|
||||
* database for the given plugin.
|
||||
* @param plugin
|
||||
* The filename of the plugin to look up Bash Tag suggestions for.
|
||||
* @returns Bash Tag data for the plugin.
|
||||
*/
|
||||
virtual PluginTags GetPluginTags(const std::string& plugin) const = 0;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @brief Outputs the messages associated with the given plugin in the
|
||||
* database.
|
||||
* @param plugin
|
||||
* The filename of the plugin to look up messages for.
|
||||
* @param language
|
||||
* The language to use when choosing which message content strings
|
||||
* to return.
|
||||
* @returns A vector of messages associated with the specified plugin. Empty
|
||||
* if the plugin has no messages associated with it.
|
||||
*/
|
||||
virtual std::vector<SimpleMessage> GetPluginMessages(const std::string& plugin,
|
||||
const LanguageCode language) const = 0;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @brief Determines the database's knowledge of a plugin's cleanliness.
|
||||
* @details Outputs whether the plugin should be cleaned or not, or if
|
||||
* no data is available. The mechanism used to determine that
|
||||
* a plugin should not be cleaned is not very reliable, and is
|
||||
* likely to fail if `EvalLists()` was called with a
|
||||
* language other than English. As such, some plugins that should
|
||||
* not be cleaned may have the `PluginCleanliness::unknown`
|
||||
* code outputted.
|
||||
* @param plugin
|
||||
* The plugin to look up the cleanliness state for.
|
||||
* @returns A plugin cleanliness code.
|
||||
*/
|
||||
virtual PluginCleanliness GetPluginCleanliness(const std::string& plugin) const = 0;
|
||||
|
||||
/** @} */
|
||||
};
|
||||
}
|
||||
|
||||
@@ -111,6 +111,10 @@ MasterlistInfo ApiDatabase::GetMasterlistRevision(const std::string& masterlistP
|
||||
return Masterlist::GetInfo(masterlistPath, getShortID);
|
||||
}
|
||||
|
||||
//////////////////////////
|
||||
// DB Access Functions
|
||||
//////////////////////////
|
||||
|
||||
std::set<std::string> ApiDatabase::GetKnownBashTags() const {
|
||||
auto masterlistTags = game_.GetMasterlist().BashTags();
|
||||
auto userlistTags = game_.GetUserlist().BashTags();
|
||||
@@ -161,80 +165,6 @@ void ApiDatabase::DiscardAllUserMetadata() {
|
||||
game_.GetUserlist().Clear();
|
||||
}
|
||||
|
||||
//////////////////////////
|
||||
// DB Access Functions
|
||||
//////////////////////////
|
||||
|
||||
PluginTags ApiDatabase::GetPluginTags(const std::string& plugin) const {
|
||||
PluginTags tags;
|
||||
|
||||
PluginMetadata pluginMetadata = game_.GetMasterlist().FindPlugin(PluginMetadata(plugin));
|
||||
for (const auto &tag : pluginMetadata.Tags()) {
|
||||
if (tag.IsAddition())
|
||||
tags.added.insert(tag.Name());
|
||||
else
|
||||
tags.removed.insert(tag.Name());
|
||||
}
|
||||
|
||||
pluginMetadata = game_.GetUserlist().FindPlugin(PluginMetadata(plugin));
|
||||
tags.userlist_modified = !pluginMetadata.Tags().empty();
|
||||
for (const auto &tag : pluginMetadata.Tags()) {
|
||||
if (tag.IsAddition())
|
||||
tags.added.insert(tag.Name());
|
||||
else
|
||||
tags.removed.insert(tag.Name());
|
||||
}
|
||||
|
||||
return tags;
|
||||
}
|
||||
|
||||
std::vector<SimpleMessage> ApiDatabase::GetPluginMessages(const std::string& plugin,
|
||||
const LanguageCode language) const {
|
||||
std::vector<SimpleMessage> messages;
|
||||
|
||||
PluginMetadata pluginMetadata = game_.GetMasterlist().FindPlugin(PluginMetadata(plugin));
|
||||
for (const auto& message : pluginMetadata.SimpleMessages(language)) {
|
||||
messages.push_back(message);
|
||||
}
|
||||
|
||||
pluginMetadata = game_.GetUserlist().FindPlugin(PluginMetadata(plugin));
|
||||
for (const auto& message : pluginMetadata.SimpleMessages(language)) {
|
||||
messages.push_back(message);
|
||||
}
|
||||
|
||||
return messages;
|
||||
}
|
||||
|
||||
PluginCleanliness ApiDatabase::GetPluginCleanliness(const std::string& plugin) const {
|
||||
// Is there any dirty info? Testing for applicability happens in loot_eval_lists().
|
||||
if (!game_.GetMasterlist().FindPlugin(PluginMetadata(plugin)).DirtyInfo().empty()
|
||||
|| !game_.GetUserlist().FindPlugin(PluginMetadata(plugin)).DirtyInfo().empty()) {
|
||||
return PluginCleanliness::dirty;
|
||||
}
|
||||
|
||||
// Is there a message beginning with the substring "Do not clean."?
|
||||
// This isn't a very reliable system, because if the lists have been evaluated in some language
|
||||
// other than English, the strings will be in different languages (and the API can't tell what they'd be)
|
||||
// and the strings may be non-standard and begin with something other than "Do not clean." anyway.
|
||||
std::vector<Message> messages(game_.GetMasterlist().FindPlugin(PluginMetadata(plugin)).Messages());
|
||||
|
||||
for (const auto& message : messages) {
|
||||
if (boost::starts_with(message.GetContent(LanguageCode::english).GetText(), "Do not clean")) {
|
||||
return PluginCleanliness::do_not_clean;
|
||||
}
|
||||
}
|
||||
|
||||
messages = game_.GetUserlist().FindPlugin(PluginMetadata(plugin)).Messages();
|
||||
|
||||
for (const auto& message : messages) {
|
||||
if (boost::starts_with(message.GetContent(LanguageCode::english).GetText(), "Do not clean")) {
|
||||
return PluginCleanliness::do_not_clean;
|
||||
}
|
||||
}
|
||||
|
||||
return PluginCleanliness::unknown;
|
||||
}
|
||||
|
||||
// Writes a minimal masterlist that only contains mods that have Bash Tag suggestions,
|
||||
// and/or dirty messages, plus the Tag suggestions and/or messages themselves and their
|
||||
// conditions, in order to create the Wrye Bash taglist. outputFile is the path to use
|
||||
|
||||
@@ -72,13 +72,6 @@ struct ApiDatabase : public DatabaseInterface {
|
||||
void DiscardPluginUserMetadata(const std::string& plugin);
|
||||
|
||||
void DiscardAllUserMetadata();
|
||||
|
||||
PluginTags GetPluginTags(const std::string& plugin) const;
|
||||
|
||||
std::vector<SimpleMessage> GetPluginMessages(const std::string& plugin,
|
||||
const LanguageCode language) const;
|
||||
|
||||
PluginCleanliness GetPluginCleanliness(const std::string& plugin) const;
|
||||
private:
|
||||
Game& game_;
|
||||
|
||||
|
||||
@@ -551,159 +551,6 @@ TEST_P(DatabaseInterfaceTest, discardAllUserMetadataShouldDiscardAllUserMetadata
|
||||
EXPECT_EQ(expectedTags, tags);
|
||||
}
|
||||
|
||||
TEST_P(DatabaseInterfaceTest, getPluginTagsShouldReturnOkAndOutputEmptyNonModifiedArraysIfAPluginWithoutTagsIsQueried) {
|
||||
ASSERT_NO_THROW(GenerateMasterlist());
|
||||
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
|
||||
|
||||
PluginTags tags;
|
||||
EXPECT_NO_THROW(tags = db_->GetPluginTags(blankEsp));
|
||||
|
||||
EXPECT_TRUE(tags.added.empty());
|
||||
EXPECT_TRUE(tags.removed.empty());
|
||||
EXPECT_FALSE(tags.userlist_modified);
|
||||
}
|
||||
|
||||
TEST_P(DatabaseInterfaceTest, getPluginTagsShouldReturnOkAndNonEmptyNonModifiedArraysIfAPluginWithTagsIsQueried) {
|
||||
ASSERT_NO_THROW(GenerateMasterlist());
|
||||
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
|
||||
|
||||
PluginTags tags;
|
||||
EXPECT_NO_THROW(tags = db_->GetPluginTags(blankEsm));
|
||||
|
||||
EXPECT_EQ(std::set<std::string>({
|
||||
"Actors.ACBS",
|
||||
"Actors.AIData",
|
||||
}), tags.added);
|
||||
EXPECT_EQ(std::set<std::string>({
|
||||
"C.Water",
|
||||
}), tags.removed);
|
||||
EXPECT_FALSE(tags.userlist_modified);
|
||||
}
|
||||
|
||||
TEST_P(DatabaseInterfaceTest, getPluginTagsShouldReturnOkAndNonEmptyModifiedArraysIfAPluginWithTagsIsQueriedAndMetadataWasAlsoLoadedFromAUserlist) {
|
||||
ASSERT_NO_THROW(GenerateMasterlist());
|
||||
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), masterlistPath.string()));
|
||||
|
||||
PluginTags tags;
|
||||
EXPECT_NO_THROW(tags = db_->GetPluginTags(blankEsm));
|
||||
|
||||
EXPECT_EQ(std::set<std::string>({
|
||||
"Actors.ACBS",
|
||||
"Actors.AIData",
|
||||
}), tags.added);
|
||||
EXPECT_EQ(std::set<std::string>({
|
||||
"C.Water",
|
||||
}), tags.removed);
|
||||
EXPECT_TRUE(tags.userlist_modified);
|
||||
}
|
||||
|
||||
TEST_P(DatabaseInterfaceTest, getPluginTagsShouldOutputTheCorrectBashTagsForPluginsWhenMakingConsecutiveCalls) {
|
||||
ASSERT_NO_THROW(GenerateMasterlist());
|
||||
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
|
||||
|
||||
PluginTags tags;
|
||||
EXPECT_NO_THROW(tags = db_->GetPluginTags(blankEsm));
|
||||
|
||||
EXPECT_EQ(std::set<std::string>({
|
||||
"Actors.ACBS",
|
||||
"Actors.AIData",
|
||||
}), tags.added);
|
||||
EXPECT_EQ(std::set<std::string>({
|
||||
"C.Water",
|
||||
}), tags.removed);
|
||||
EXPECT_FALSE(tags.userlist_modified);
|
||||
|
||||
EXPECT_NO_THROW(tags = db_->GetPluginTags(blankEsp));
|
||||
|
||||
EXPECT_TRUE(tags.added.empty());
|
||||
EXPECT_TRUE(tags.removed.empty());
|
||||
EXPECT_FALSE(tags.userlist_modified);
|
||||
}
|
||||
|
||||
TEST_P(DatabaseInterfaceTest, getPluginMessagesShouldReturnOkAndOutputANullArrayIfAPluginWithNoMessagesIsQueried) {
|
||||
std::vector<SimpleMessage> messages;
|
||||
EXPECT_NO_THROW(messages = db_->GetPluginMessages(blankEsp, LanguageCode::english));
|
||||
EXPECT_TRUE(messages.empty());
|
||||
}
|
||||
|
||||
TEST_P(DatabaseInterfaceTest, getPluginMessagesShouldReturnOkAndOutputANoteIfAPluginWithANoteMessageIsQueried) {
|
||||
ASSERT_NO_THROW(GenerateMasterlist());
|
||||
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
|
||||
|
||||
std::vector<SimpleMessage> messages;
|
||||
EXPECT_NO_THROW(messages = db_->GetPluginMessages(blankEsm, LanguageCode::english));
|
||||
ASSERT_EQ(1, messages.size());
|
||||
EXPECT_EQ(MessageType::say, messages[0].type);
|
||||
EXPECT_EQ(LanguageCode::english, messages[0].language);
|
||||
EXPECT_EQ(noteMessage, messages[0].text);
|
||||
}
|
||||
|
||||
TEST_P(DatabaseInterfaceTest, getPluginMessagesShouldReturnOkAndOutputAWarningIfAPluginWithAWarningMessageIsQueried) {
|
||||
ASSERT_NO_THROW(GenerateMasterlist());
|
||||
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
|
||||
|
||||
std::vector<SimpleMessage> messages;
|
||||
EXPECT_NO_THROW(messages = db_->GetPluginMessages(blankDifferentEsm, LanguageCode::english));
|
||||
ASSERT_EQ(1, messages.size());
|
||||
EXPECT_EQ(MessageType::warn, messages[0].type);
|
||||
EXPECT_EQ(LanguageCode::english, messages[0].language);
|
||||
EXPECT_EQ(warningMessage, messages[0].text);
|
||||
}
|
||||
|
||||
TEST_P(DatabaseInterfaceTest, getPluginMessagesShouldReturnOkAndOutputAnErrorIfAPluginWithAnErrorMessageIsQueried) {
|
||||
ASSERT_NO_THROW(GenerateMasterlist());
|
||||
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
|
||||
|
||||
std::vector<SimpleMessage> messages;
|
||||
EXPECT_NO_THROW(messages = db_->GetPluginMessages(blankDifferentEsp, LanguageCode::english));
|
||||
ASSERT_EQ(1, messages.size());
|
||||
EXPECT_EQ(MessageType::error, messages[0].type);
|
||||
EXPECT_EQ(LanguageCode::english, messages[0].language);
|
||||
EXPECT_EQ(errorMessage, messages[0].text);
|
||||
}
|
||||
|
||||
TEST_P(DatabaseInterfaceTest, getPluginMessagesShouldReturnOkAndOutputMultipleMessagesIfAPluginWithMultipleMessagesIsQueried) {
|
||||
ASSERT_NO_THROW(GenerateMasterlist());
|
||||
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
|
||||
|
||||
std::vector<SimpleMessage> messages;
|
||||
EXPECT_NO_THROW(messages = db_->GetPluginMessages(blankDifferentMasterDependentEsp, LanguageCode::english));
|
||||
ASSERT_EQ(3, messages.size());
|
||||
EXPECT_EQ(MessageType::say, messages[0].type);
|
||||
EXPECT_EQ(LanguageCode::english, messages[0].language);
|
||||
EXPECT_EQ(noteMessage, messages[0].text);
|
||||
EXPECT_EQ(MessageType::warn, messages[1].type);
|
||||
EXPECT_EQ(LanguageCode::english, messages[1].language);
|
||||
EXPECT_EQ(warningMessage, messages[1].text);
|
||||
EXPECT_EQ(MessageType::error, messages[2].type);
|
||||
EXPECT_EQ(LanguageCode::english, messages[2].language);
|
||||
EXPECT_EQ(errorMessage, messages[2].text);
|
||||
}
|
||||
|
||||
TEST_P(DatabaseInterfaceTest, getPluginCleanlinessShouldReturnOkAndOutputUnknownForAPluginWithNoDirtyInfo) {
|
||||
PluginCleanliness cleanliness;
|
||||
EXPECT_NO_THROW(cleanliness = db_->GetPluginCleanliness(blankEsp));
|
||||
EXPECT_EQ(PluginCleanliness::unknown, cleanliness);
|
||||
}
|
||||
|
||||
TEST_P(DatabaseInterfaceTest, getPluginCleanlinessShouldReturnOkAndOutputYesForAPluginWithDirtyInfo) {
|
||||
ASSERT_NO_THROW(GenerateMasterlist());
|
||||
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
|
||||
|
||||
PluginCleanliness cleanliness;
|
||||
EXPECT_NO_THROW(cleanliness = db_->GetPluginCleanliness(blankDifferentEsm));
|
||||
EXPECT_EQ(PluginCleanliness::dirty, cleanliness);
|
||||
}
|
||||
|
||||
TEST_P(DatabaseInterfaceTest, getPluginCleanlinessShouldReturnOkAndOutputNoForAPluginWithADoNotCleanMessage) {
|
||||
ASSERT_NO_THROW(GenerateMasterlist());
|
||||
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
|
||||
|
||||
PluginCleanliness cleanliness;
|
||||
EXPECT_NO_THROW(cleanliness = db_->GetPluginCleanliness(blankEsm));
|
||||
EXPECT_EQ(PluginCleanliness::do_not_clean, cleanliness);
|
||||
}
|
||||
|
||||
TEST_P(DatabaseInterfaceTest, writeMinimalListShouldReturnOkAndWriteToFileIfArgumentsGivenAreValid) {
|
||||
EXPECT_NO_THROW(db_->WriteMinimalList(minimalOutputPath_.string(), false));
|
||||
EXPECT_TRUE(boost::filesystem::exists(minimalOutputPath_));
|
||||
|
||||
Reference in New Issue
Block a user