Fix ThreadLogMessagesTest on Chrome OS

Previously, these tests expected a specifically formatted prefix to log
messages, but logging on Chrome OS uses a different format for the
prefix.

This change updates the tests to expect log messages at the end of a log
line, but ignores the prefix.

Change-Id: Iff748eec04d0fc5a0a786a5676a74e2aad1ec243
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2503462
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
This commit is contained in:
Joshua Peraza 2020-10-27 12:47:11 -07:00
parent 68b10080d2
commit 88955e6b56

View File

@ -36,42 +36,13 @@ TEST(ThreadLogMessages, Empty) {
EXPECT_TRUE(log_messages.empty());
}
// For a message formatted like "[preamble] message\n", returns just "message".
// If the message is not formatted as expected, a Google Test expectation
// failure will be recorded and this function will return an empty string.
std::string MessageString(const std::string& log_message) {
if (log_message.size() < 1) {
EXPECT_GE(log_message.size(), 1u);
return std::string();
}
constexpr char kStartChar = '[';
if (log_message[0] != kStartChar) {
EXPECT_EQ(log_message[0], kStartChar);
return std::string();
}
static constexpr char kFindString[] = "] ";
size_t pos = log_message.find(kFindString);
if (pos == std::string::npos) {
EXPECT_NE(pos, std::string::npos);
return std::string();
}
std::string message_string = log_message.substr(pos + strlen(kFindString));
if (message_string.size() < 1) {
EXPECT_GE(message_string.size(), 1u);
return std::string();
}
constexpr char kEndChar = '\n';
if (message_string[message_string.size() - 1] != kEndChar) {
EXPECT_NE(message_string[message_string.size() - 1], kEndChar);
return std::string();
}
message_string.resize(message_string.size() - 1);
return message_string;
void ExpectLogMessage(const std::string& message, const std::string& expected) {
ASSERT_GT(message.size(), expected.size());
EXPECT_EQ(message.back(), '\n');
EXPECT_STREQ(
message.substr(message.size() - expected.size() - 1, expected.size())
.c_str(),
expected.c_str());
}
TEST(ThreadLogMessages, Basic) {
@ -96,7 +67,8 @@ TEST(ThreadLogMessages, Basic) {
EXPECT_EQ(log_messages.size(), base::size(kMessages));
for (size_t index = 0; index < base::size(kMessages); ++index) {
EXPECT_EQ(MessageString(log_messages[index]), kMessages[index])
ASSERT_NO_FATAL_FAILURE(
ExpectLogMessage(log_messages[index], kMessages[index]))
<< "index " << index;
}
}
@ -112,7 +84,7 @@ TEST(ThreadLogMessages, Basic) {
thread_log_messages.log_messages();
EXPECT_EQ(log_messages.size(), 1u);
EXPECT_EQ(MessageString(log_messages[0]), kMessage);
ExpectLogMessage(log_messages[0], kMessage);
}
{
@ -124,8 +96,8 @@ TEST(ThreadLogMessages, Basic) {
thread_log_messages.log_messages();
EXPECT_EQ(log_messages.size(), 1u);
EXPECT_EQ(MessageString(log_messages[0]),
"I can't believe I streamed the whole thing.");
ExpectLogMessage(log_messages[0],
"I can't believe I streamed the whole thing.");
}
}
@ -156,7 +128,8 @@ class LoggingTestThread : public Thread {
ASSERT_EQ(log_messages.size(), static_cast<size_t>(count_));
for (size_t index = 0; index < log_messages.size(); ++index) {
EXPECT_EQ(MessageString(log_messages[index]), expected_messages[index])
ASSERT_NO_FATAL_FAILURE(
ExpectLogMessage(log_messages[index], expected_messages[index]))
<< "thread_number_ " << thread_number_ << ", index " << index;
}
}