Add Database::user_known_bash_tags()

This commit is contained in:
Oliver Hamlet
2026-01-02 15:30:24 +00:00
parent e72a0de8c7
commit 2fe107d66b
9 changed files with 87 additions and 0 deletions
+9
View File
@@ -68,6 +68,15 @@ std::vector<std::string> Database::GetKnownBashTags() const {
}
}
std::vector<std::string> Database::GetUserKnownBashTags() const {
try {
return convert<std::string>(
database_->user_known_bash_tags());
} catch (const ::rust::Error& e) {
std::rethrow_exception(mapError(e));
}
}
std::vector<Message> Database::GetGeneralMessages(
bool evaluateConditions) const {
try {
+2
View File
@@ -30,6 +30,8 @@ public:
std::vector<std::string> GetKnownBashTags() const override;
std::vector<std::string> GetUserKnownBashTags() const override;
std::vector<Message> GetGeneralMessages(
bool evaluateConditions = false) const override;
+9
View File
@@ -111,6 +111,15 @@ impl Database {
.known_bash_tags())
}
pub fn user_known_bash_tags(&self) -> Result<Vec<String>, VerboseError> {
Ok(self
.0
.read()
.map_err(DatabaseLockPoisonError::from)?
.user_known_bash_tags()
.to_vec())
}
pub fn general_messages(
&self,
evaluate_conditions: bool,
+2
View File
@@ -270,6 +270,8 @@ mod ffi {
pub fn known_bash_tags(&self) -> Result<Vec<String>>;
pub fn user_known_bash_tags(&self) -> Result<Vec<String>>;
pub fn general_messages(&self, evaluate_conditions: bool) -> Result<Vec<Message>>;
pub fn groups(&self, include_user_metadata: bool) -> Result<Vec<Group>>;
@@ -485,6 +485,23 @@ TEST_P(DatabaseInterfaceTest,
EXPECT_EQ(expectedTags, tags);
}
TEST_P(DatabaseInterfaceTest,
getUserKnownBashTagsShouldReturnAllBashTagsListedInLoadedUserMetadata) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(GenerateUserlist());
ASSERT_NO_THROW(handle_->GetDatabase().LoadMasterlist(masterlistPath));
ASSERT_NO_THROW(handle_->GetDatabase().LoadUserlist(userlistPath_));
auto tags = handle_->GetDatabase().GetUserKnownBashTags();
std::vector<std::string> expectedTags({
"RaceRelations",
"C.Lighting",
});
EXPECT_EQ(expectedTags, tags);
}
TEST_P(DatabaseInterfaceTest,
getGeneralMessagesShouldGetGeneralMessagesFromTheMasterlistAndUserlist) {
ASSERT_NO_THROW(GenerateMasterlist());