Index: base/logging_unittest.cc |
diff --git a/base/logging_unittest.cc b/base/logging_unittest.cc |
index e03c45ec179c8ad008d73e001ba143b2e6039932..4b7fdbcd46ad5db4cb640b55bbb96e25c2aa32bb 100644 |
--- a/base/logging_unittest.cc |
+++ b/base/logging_unittest.cc |
@@ -80,6 +80,64 @@ TEST_F(LoggingTest, BasicLogging) { |
DVLOG_IF(0, true) << mock_log_source.Log(); |
} |
+TEST_F(LoggingTest, LogIsOn) { |
+#if defined(NDEBUG) |
+ const bool kDfatalIsFatal = false; |
+#else // defined(NDEBUG) |
+ const bool kDfatalIsFatal = true; |
+#endif // defined(NDEBUG) |
+ |
+ SetMinLogLevel(LOG_INFO); |
+ EXPECT_TRUE(LOG_IS_ON(INFO)); |
+ EXPECT_TRUE(LOG_IS_ON(WARNING)); |
+ EXPECT_TRUE(LOG_IS_ON(ERROR)); |
+ EXPECT_TRUE(LOG_IS_ON(ERROR_REPORT)); |
+ EXPECT_TRUE(LOG_IS_ON(FATAL)); |
+ EXPECT_TRUE(LOG_IS_ON(DFATAL)); |
+ |
+ SetMinLogLevel(LOG_WARNING); |
+ EXPECT_FALSE(LOG_IS_ON(INFO)); |
+ EXPECT_TRUE(LOG_IS_ON(WARNING)); |
+ EXPECT_TRUE(LOG_IS_ON(ERROR)); |
+ EXPECT_TRUE(LOG_IS_ON(ERROR_REPORT)); |
+ EXPECT_TRUE(LOG_IS_ON(FATAL)); |
+ EXPECT_TRUE(LOG_IS_ON(DFATAL)); |
+ |
+ SetMinLogLevel(LOG_ERROR); |
+ EXPECT_FALSE(LOG_IS_ON(INFO)); |
+ EXPECT_FALSE(LOG_IS_ON(WARNING)); |
+ EXPECT_TRUE(LOG_IS_ON(ERROR)); |
+ EXPECT_TRUE(LOG_IS_ON(ERROR_REPORT)); |
+ EXPECT_TRUE(LOG_IS_ON(FATAL)); |
+ EXPECT_TRUE(LOG_IS_ON(DFATAL)); |
+ |
+ SetMinLogLevel(LOG_ERROR_REPORT); |
+ EXPECT_FALSE(LOG_IS_ON(INFO)); |
+ EXPECT_FALSE(LOG_IS_ON(WARNING)); |
+ EXPECT_FALSE(LOG_IS_ON(ERROR)); |
+ EXPECT_TRUE(LOG_IS_ON(ERROR_REPORT)); |
+ EXPECT_TRUE(LOG_IS_ON(FATAL)); |
+ EXPECT_EQ(kDfatalIsFatal, LOG_IS_ON(DFATAL)); |
+ |
+ // LOG_IS_ON(ERROR_REPORT) should always be true. |
+ SetMinLogLevel(LOG_FATAL); |
+ EXPECT_FALSE(LOG_IS_ON(INFO)); |
+ EXPECT_FALSE(LOG_IS_ON(WARNING)); |
+ EXPECT_FALSE(LOG_IS_ON(ERROR)); |
+ EXPECT_TRUE(LOG_IS_ON(ERROR_REPORT)); |
+ EXPECT_TRUE(LOG_IS_ON(FATAL)); |
+ EXPECT_EQ(kDfatalIsFatal, LOG_IS_ON(DFATAL)); |
+ |
+ // So should LOG_IS_ON(FATAL). |
+ SetMinLogLevel(LOG_FATAL + 1); |
+ EXPECT_FALSE(LOG_IS_ON(INFO)); |
+ EXPECT_FALSE(LOG_IS_ON(WARNING)); |
+ EXPECT_FALSE(LOG_IS_ON(ERROR)); |
+ EXPECT_TRUE(LOG_IS_ON(ERROR_REPORT)); |
+ EXPECT_TRUE(LOG_IS_ON(FATAL)); |
+ EXPECT_EQ(kDfatalIsFatal, LOG_IS_ON(DFATAL)); |
+} |
+ |
TEST_F(LoggingTest, LoggingIsLazy) { |
MockLogSource mock_log_source; |
EXPECT_CALL(mock_log_source, Log()).Times(0); |
@@ -105,14 +163,13 @@ TEST_F(LoggingTest, LoggingIsLazy) { |
DVLOG_IF(1, true) << mock_log_source.Log(); |
} |
-TEST_F(LoggingTest, ChecksAreNotLazy) { |
+TEST_F(LoggingTest, CheckStreamsAreLazy) { |
MockLogSource mock_log_source, uncalled_mock_log_source; |
EXPECT_CALL(mock_log_source, Log()).Times(8). |
WillRepeatedly(Return("check message")); |
EXPECT_CALL(uncalled_mock_log_source, Log()).Times(0); |
- SetMinLogLevel(LOG_FATAL + 1); |
- EXPECT_FALSE(LOG_IS_ON(FATAL)); |
+ SetLogAssertHandler(&LogSink); |
CHECK(mock_log_source.Log()) << uncalled_mock_log_source.Log(); |
PCHECK(!mock_log_source.Log()) << mock_log_source.Log(); |
@@ -134,22 +191,19 @@ TEST_F(LoggingTest, DebugLoggingReleaseBehavior) { |
DVLOG_IF(1, debug_only_variable) << "test"; |
} |
-TEST_F(LoggingTest, DchecksAreLazy) { |
+TEST_F(LoggingTest, DcheckStreamsAreLazy) { |
MockLogSource mock_log_source; |
EXPECT_CALL(mock_log_source, Log()).Times(0); |
#if !defined(LOGGING_IS_OFFICIAL_BUILD) && defined(NDEBUG) |
// Unofficial release build. |
logging::g_enable_dcheck = false; |
-#else // !defined(LOGGING_IS_OFFICIAL_BUILD) && defined(NDEBUG) |
- SetMinLogLevel(LOG_FATAL + 1); |
- EXPECT_FALSE(LOG_IS_ON(FATAL)); |
-#endif // !defined(LOGGING_IS_OFFICIAL_BUILD) && defined(NDEBUG) |
DCHECK(mock_log_source.Log()) << mock_log_source.Log(); |
DPCHECK(mock_log_source.Log()) << mock_log_source.Log(); |
DCHECK_EQ(0, 0) << mock_log_source.Log(); |
DCHECK_EQ(mock_log_source.Log(), static_cast<const char*>(NULL)) |
<< mock_log_source.Log(); |
+#endif // !defined(LOGGING_IS_OFFICIAL_BUILD) && defined(NDEBUG) |
} |
TEST_F(LoggingTest, Dcheck) { |