| Index: third_party/mojo/src/mojo/public/cpp/environment/tests/logging_unittest.cc
|
| diff --git a/third_party/mojo/src/mojo/public/cpp/environment/tests/logging_unittest.cc b/third_party/mojo/src/mojo/public/cpp/environment/tests/logging_unittest.cc
|
| index 25ebb3403507226cd092203ae68ee6b4d1c8fce9..489888c5a957990da92d9a92d9a5ea4d06f5c180 100644
|
| --- a/third_party/mojo/src/mojo/public/cpp/environment/tests/logging_unittest.cc
|
| +++ b/third_party/mojo/src/mojo/public/cpp/environment/tests/logging_unittest.cc
|
| @@ -12,13 +12,12 @@
|
| #include "mojo/public/cpp/system/macros.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| -// A macro, so it can be automatically joined with other string literals. (Not
|
| -// simply __FILE__, since that may contain a path.)
|
| -#define OUR_FILENAME "logging_unittest.cc"
|
| -
|
| namespace mojo {
|
| namespace {
|
|
|
| +// The current logging system strips the path, so we need our filename.
|
| +const char kOurFilename[] = "logging_unittest.cc";
|
| +
|
| class PtrToMemberHelper {
|
| public:
|
| int member;
|
| @@ -42,6 +41,8 @@ class LoggingTest : public testing::Test {
|
| static void ResetMockLogger() {
|
| log_message_was_called_ = false;
|
| last_log_level_ = MOJO_LOG_LEVEL_INFO;
|
| + last_source_file_.clear();
|
| + last_source_line_ = 0;
|
| last_message_.clear();
|
| }
|
|
|
| @@ -53,6 +54,8 @@ class LoggingTest : public testing::Test {
|
|
|
| static bool log_message_was_called() { return log_message_was_called_; }
|
| static MojoLogLevel last_log_level() { return last_log_level_; }
|
| + static const std::string& last_source_file() { return last_source_file_; }
|
| + static uint32_t last_source_line() { return last_source_line_; }
|
| static const std::string& last_message() { return last_message_; }
|
| static bool not_called_condition_was_called() {
|
| return not_called_condition_was_called_;
|
| @@ -62,9 +65,14 @@ class LoggingTest : public testing::Test {
|
| // Note: We record calls even if |log_level| is below |minimum_log_level_|
|
| // (since the macros should mostly avoid this, and we want to be able to check
|
| // that they do).
|
| - static void MockLogMessage(MojoLogLevel log_level, const char* message) {
|
| + static void MockLogMessage(MojoLogLevel log_level,
|
| + const char* source_file,
|
| + uint32_t source_line,
|
| + const char* message) {
|
| log_message_was_called_ = true;
|
| last_log_level_ = log_level;
|
| + last_source_file_ = source_file;
|
| + last_source_line_ = source_line;
|
| last_message_ = message;
|
| }
|
|
|
| @@ -80,6 +88,8 @@ class LoggingTest : public testing::Test {
|
| static MojoLogLevel minimum_log_level_;
|
| static bool log_message_was_called_;
|
| static MojoLogLevel last_log_level_;
|
| + static std::string last_source_file_;
|
| + static uint32_t last_source_line_;
|
| static std::string last_message_;
|
| static bool not_called_condition_was_called_;
|
|
|
| @@ -102,114 +112,138 @@ bool LoggingTest::log_message_was_called_ = MOJO_LOG_LEVEL_INFO;
|
| MojoLogLevel LoggingTest::last_log_level_ = MOJO_LOG_LEVEL_INFO;
|
|
|
| // static
|
| +std::string LoggingTest::last_source_file_;
|
| +
|
| +// static
|
| +uint32_t LoggingTest::last_source_line_ = 0;
|
| +
|
| +// static
|
| std::string LoggingTest::last_message_;
|
|
|
| // static
|
| bool LoggingTest::not_called_condition_was_called_ = false;
|
|
|
| -std::string ExpectedLogMessage(int line, const char* message) {
|
| - std::ostringstream s;
|
| - s << OUR_FILENAME "(" << line << "): " << message;
|
| - return s.str();
|
| -}
|
| -
|
| TEST_F(LoggingTest, InternalLogMessage) {
|
| - internal::LogMessage("foo.cc", 123, MOJO_LOG_LEVEL_INFO).stream() << "hello "
|
| + internal::LogMessage(MOJO_LOG_LEVEL_INFO, "foo.cc", 123).stream() << "hello "
|
| << "world";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ("foo.cc(123): hello world", last_message());
|
| + EXPECT_EQ("foo.cc", last_source_file());
|
| + EXPECT_EQ(123u, last_source_line());
|
| + EXPECT_EQ("hello world", last_message());
|
|
|
| ResetMockLogger();
|
|
|
| - internal::LogMessage("./path/to/foo.cc", 123, MOJO_LOG_LEVEL_WARNING).stream()
|
| + internal::LogMessage(MOJO_LOG_LEVEL_WARNING, "./path/to/foo.cc", 123).stream()
|
| << "hello "
|
| << "world";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_WARNING, last_log_level());
|
| - EXPECT_EQ("foo.cc(123): hello world", last_message());
|
| + EXPECT_EQ("foo.cc", last_source_file());
|
| + EXPECT_EQ(123u, last_source_line());
|
| + EXPECT_EQ("hello world", last_message());
|
|
|
| ResetMockLogger();
|
|
|
| - internal::LogMessage("/path/to/foo.cc", 123, MOJO_LOG_LEVEL_ERROR).stream()
|
| + internal::LogMessage(MOJO_LOG_LEVEL_ERROR, "/path/to/foo.cc", 123).stream()
|
| << "hello "
|
| << "world";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ("foo.cc(123): hello world", last_message());
|
| + EXPECT_EQ("foo.cc", last_source_file());
|
| + EXPECT_EQ(123u, last_source_line());
|
| + EXPECT_EQ("hello world", last_message());
|
|
|
| ResetMockLogger();
|
|
|
| - internal::LogMessage("path/to/foo.cc", 123, MOJO_LOG_LEVEL_FATAL).stream()
|
| + internal::LogMessage(MOJO_LOG_LEVEL_FATAL, "path/to/foo.cc", 123).stream()
|
| << "hello "
|
| << "world";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_FATAL, last_log_level());
|
| - EXPECT_EQ("foo.cc(123): hello world", last_message());
|
| + EXPECT_EQ("foo.cc", last_source_file());
|
| + EXPECT_EQ(123u, last_source_line());
|
| + EXPECT_EQ("hello world", last_message());
|
|
|
| ResetMockLogger();
|
|
|
| - internal::LogMessage(".\\xy\\foo.cc", 123, MOJO_LOG_LEVEL_VERBOSE).stream()
|
| + internal::LogMessage(MOJO_LOG_LEVEL_VERBOSE, ".\\xy\\foo.cc", 123).stream()
|
| << "hello "
|
| << "world";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_VERBOSE, last_log_level());
|
| - EXPECT_EQ("foo.cc(123): hello world", last_message());
|
| + EXPECT_EQ("foo.cc", last_source_file());
|
| + EXPECT_EQ(123u, last_source_line());
|
| + EXPECT_EQ("hello world", last_message());
|
|
|
| ResetMockLogger();
|
|
|
| - internal::LogMessage("xy\\foo.cc", 123, MOJO_LOG_LEVEL_VERBOSE - 1).stream()
|
| + internal::LogMessage(MOJO_LOG_LEVEL_VERBOSE - 1, "xy\\foo.cc", 123).stream()
|
| << "hello "
|
| << "world";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_VERBOSE - 1, last_log_level());
|
| - EXPECT_EQ("foo.cc(123): hello world", last_message());
|
| + EXPECT_EQ("foo.cc", last_source_file());
|
| + EXPECT_EQ(123u, last_source_line());
|
| + EXPECT_EQ("hello world", last_message());
|
|
|
| ResetMockLogger();
|
|
|
| - internal::LogMessage("C:\\xy\\foo.cc", 123, MOJO_LOG_LEVEL_VERBOSE - 9)
|
| + internal::LogMessage(MOJO_LOG_LEVEL_VERBOSE - 9, "C:\\xy\\foo.cc", 123)
|
| .stream()
|
| << "hello "
|
| << "world";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_VERBOSE - 9, last_log_level());
|
| - EXPECT_EQ("foo.cc(123): hello world", last_message());
|
| + EXPECT_EQ("foo.cc", last_source_file());
|
| + EXPECT_EQ(123u, last_source_line());
|
| + EXPECT_EQ("hello world", last_message());
|
|
|
| ResetMockLogger();
|
|
|
| - internal::LogMessage(__FILE__, 123, MOJO_LOG_LEVEL_INFO).stream() << "hello "
|
| + internal::LogMessage(MOJO_LOG_LEVEL_INFO, __FILE__, 123).stream() << "hello "
|
| << "world";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(OUR_FILENAME "(123): hello world", last_message());
|
| + EXPECT_EQ(kOurFilename, last_source_file());
|
| + EXPECT_EQ(123u, last_source_line());
|
| + EXPECT_EQ("hello world", last_message());
|
| }
|
|
|
| TEST_F(LoggingTest, LogStream) {
|
| MOJO_LOG_STREAM(INFO) << "hello";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
| + EXPECT_EQ(kOurFilename, last_source_file());
|
| + EXPECT_EQ(static_cast<uint32_t>(__LINE__ - 4), last_source_line());
|
| + EXPECT_EQ("hello", last_message());
|
|
|
| ResetMockLogger();
|
|
|
| MOJO_LOG_STREAM(ERROR) << "hi " << 123;
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hi 123"), last_message());
|
| + EXPECT_EQ(kOurFilename, last_source_file());
|
| + EXPECT_EQ(static_cast<uint32_t>(__LINE__ - 4), last_source_line());
|
| + EXPECT_EQ("hi 123", last_message());
|
| }
|
|
|
| TEST_F(LoggingTest, LazyLogStream) {
|
| MOJO_LAZY_LOG_STREAM(INFO, true) << "hello";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
| + EXPECT_EQ(kOurFilename, last_source_file());
|
| + EXPECT_EQ(static_cast<uint32_t>(__LINE__ - 4), last_source_line());
|
| + EXPECT_EQ("hello", last_message());
|
|
|
| ResetMockLogger();
|
|
|
| MOJO_LAZY_LOG_STREAM(ERROR, true) << "hi " << 123;
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hi 123"), last_message());
|
| + EXPECT_EQ(kOurFilename, last_source_file());
|
| + EXPECT_EQ(static_cast<uint32_t>(__LINE__ - 4), last_source_line());
|
| + EXPECT_EQ("hi 123", last_message());
|
|
|
| ResetMockLogger();
|
|
|
| @@ -273,14 +307,18 @@ TEST_F(LoggingTest, Log) {
|
| MOJO_LOG(INFO) << "hello";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
| + EXPECT_EQ(kOurFilename, last_source_file());
|
| + EXPECT_EQ(static_cast<uint32_t>(__LINE__ - 4), last_source_line());
|
| + EXPECT_EQ("hello", last_message());
|
|
|
| ResetMockLogger();
|
|
|
| MOJO_LOG(ERROR) << "hello";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
| + EXPECT_EQ(kOurFilename, last_source_file());
|
| + EXPECT_EQ(static_cast<uint32_t>(__LINE__ - 4), last_source_line());
|
| + EXPECT_EQ("hello", last_message());
|
|
|
| ResetMockLogger();
|
|
|
| @@ -299,7 +337,9 @@ TEST_F(LoggingTest, Log) {
|
| MOJO_LOG(ERROR) << "hello";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
| + EXPECT_EQ(kOurFilename, last_source_file());
|
| + EXPECT_EQ(static_cast<uint32_t>(__LINE__ - 4), last_source_line());
|
| + EXPECT_EQ("hello", last_message());
|
| }
|
|
|
| TEST_F(LoggingTest, LogIf) {
|
| @@ -335,7 +375,9 @@ TEST_F(LoggingTest, LogIf) {
|
| MOJO_LOG_IF(ERROR, 1 * 2 == 2) << "hello";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
| + EXPECT_EQ(kOurFilename, last_source_file());
|
| + EXPECT_EQ(static_cast<uint32_t>(__LINE__ - 4), last_source_line());
|
| + EXPECT_EQ("hello", last_message());
|
|
|
| ResetMockLogger();
|
|
|
| @@ -365,12 +407,9 @@ TEST_F(LoggingTest, Check) {
|
| MOJO_CHECK(helper.*member_ptr == 1) << "hello";
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_FATAL, last_log_level());
|
| - // Different compilers have different ideas about the line number of a split
|
| - // line.
|
| - int line = __LINE__;
|
| - EXPECT_EQ(ExpectedLogMessage(line - 5,
|
| - "Check failed: helper.*member_ptr == 1. hello"),
|
| - last_message());
|
| + EXPECT_EQ(kOurFilename, last_source_file());
|
| + EXPECT_EQ(static_cast<uint32_t>(__LINE__ - 4), last_source_line());
|
| + EXPECT_EQ("Check failed: helper.*member_ptr == 1. hello", last_message());
|
|
|
| ResetMockLogger();
|
|
|
| @@ -392,7 +431,9 @@ TEST_F(LoggingTest, Dlog) {
|
| #else
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 6, "hello"), last_message());
|
| + EXPECT_EQ(kOurFilename, last_source_file());
|
| + EXPECT_EQ(static_cast<uint32_t>(__LINE__ - 7), last_source_line());
|
| + EXPECT_EQ("hello", last_message());
|
| #endif
|
| }
|
|
|
| @@ -416,7 +457,9 @@ TEST_F(LoggingTest, DlogIf) {
|
| #else
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 6, "hello"), last_message());
|
| + EXPECT_EQ(kOurFilename, last_source_file());
|
| + EXPECT_EQ(static_cast<uint32_t>(__LINE__ - 7), last_source_line());
|
| + EXPECT_EQ("hello", last_message());
|
| #endif
|
|
|
| ResetMockLogger();
|
| @@ -431,7 +474,9 @@ TEST_F(LoggingTest, DlogIf) {
|
| #else
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_WARNING, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 6, "hello"), last_message());
|
| + EXPECT_EQ(kOurFilename, last_source_file());
|
| + EXPECT_EQ(static_cast<uint32_t>(__LINE__ - 7), last_source_line());
|
| + EXPECT_EQ("hello", last_message());
|
| #endif
|
| }
|
|
|
| @@ -458,13 +503,10 @@ TEST_F(LoggingTest, Dcheck) {
|
| EXPECT_TRUE(was_called);
|
| EXPECT_TRUE(log_message_was_called());
|
| EXPECT_EQ(MOJO_LOG_LEVEL_FATAL, last_log_level());
|
| - // Different compilers have different ideas about the line number of a split
|
| - // line.
|
| - int line = __LINE__;
|
| - EXPECT_EQ(
|
| - ExpectedLogMessage(line - 10,
|
| - "Check failed: DcheckTestHelper(&was_called). hello"),
|
| - last_message());
|
| + EXPECT_EQ(kOurFilename, last_source_file());
|
| + EXPECT_EQ(static_cast<uint32_t>(__LINE__ - 9), last_source_line());
|
| + EXPECT_EQ("Check failed: DcheckTestHelper(&was_called). hello",
|
| + last_message());
|
| #endif
|
|
|
| ResetMockLogger();
|
|
|