Add include_user_metadata parameter to Database::general_messages()

The C++ wrapper defaults it to true, so the behaviour hasn't changed for
existing callers that don't pass a value for the evaluateConditions
parameter, i.e. that call GetGeneralMessages().

Since the new parameter comes before evaluateConditions,
existing GetGeneralMessages(true) and GetGeneralMessages(false) calls
need to be replaced with GetGeneralMessages(true, true) and
GetGeneralMessages(true, false) to retain their existing behaviour. The
parameter order was chosen to match that of GetPluginMetadata(), at the
cost of this backwards incompatibility.
This commit is contained in:
Oliver Hamlet
2026-01-02 16:41:43 +00:00
parent f582a513bc
commit 96b2ed2373
9 changed files with 92 additions and 17 deletions
+3 -1
View File
@@ -87,9 +87,11 @@ void Database::SetUserKnownBashTags(const std::vector<std::string>& bashTags) {
}
std::vector<Message> Database::GetGeneralMessages(
bool includeUserMetadata,
bool evaluateConditions) const {
try {
return convert<Message>(database_->general_messages(evaluateConditions));
return convert<Message>(
database_->general_messages(includeUserMetadata, evaluateConditions));
} catch (const ::rust::Error& e) {
std::rethrow_exception(mapError(e));
}
+1
View File
@@ -36,6 +36,7 @@ public:
void SetUserKnownBashTags(const std::vector<std::string>& bashTags) override;
std::vector<Message> GetGeneralMessages(
bool includeUserMetadata = true,
bool evaluateConditions = false) const override;
std::vector<Message> GetUserGeneralMessages(
+5 -1
View File
@@ -134,12 +134,16 @@ impl Database {
pub fn general_messages(
&self,
include_user_metadata: bool,
evaluate_conditions: bool,
) -> Result<Vec<Message>, VerboseError> {
self.0
.read()
.map_err(DatabaseLockPoisonError::from)?
.general_messages(to_eval_mode(evaluate_conditions))
.general_messages(
to_merge_mode(include_user_metadata),
to_eval_mode(evaluate_conditions),
)
.map(|v| v.into_iter().map(Into::into).collect())
.map_err(Into::into)
}
+5 -1
View File
@@ -274,7 +274,11 @@ mod ffi {
pub fn set_user_known_bash_tags(&self, bash_tags: Vec<String>) -> Result<()>;
pub fn general_messages(&self, evaluate_conditions: bool) -> Result<Vec<Message>>;
pub fn general_messages(
&self,
include_user_metadata: bool,
evaluate_conditions: bool,
) -> Result<Vec<Message>>;
pub fn user_general_messages(&self, evaluate_conditions: bool) -> Result<Vec<Message>>;
@@ -555,13 +555,31 @@ TEST_P(DatabaseInterfaceTest,
EXPECT_EQ(expectedMessages, messages);
}
TEST_P(
DatabaseInterfaceTest,
getGeneralMessagesShouldGetGeneralMessagesFromTheMasterlistOnlyWhenFirstParamIsFalse) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(GenerateUserlist());
ASSERT_NO_THROW(handle_->GetDatabase().LoadMasterlist(masterlistPath));
ASSERT_NO_THROW(handle_->GetDatabase().LoadUserlist(userlistPath_));
auto messages = handle_->GetDatabase().GetGeneralMessages(false);
std::vector<Message> expectedMessages({
Message(MessageType::say,
generalMasterlistMessage,
"file(\"" + missingEsp + "\")"),
});
EXPECT_EQ(expectedMessages, messages);
}
TEST_P(
DatabaseInterfaceTest,
getGeneralMessagesShouldReturnOnlyValidMessagesIfConditionsAreEvaluated) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(handle_->GetDatabase().LoadMasterlist(masterlistPath));
auto messages = handle_->GetDatabase().GetGeneralMessages(true);
auto messages = handle_->GetDatabase().GetGeneralMessages(true, true);
EXPECT_TRUE(messages.empty());
}