OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/logging.h" | 6 #include "base/logging.h" |
7 | 7 |
8 #include "testing/gmock/include/gmock/gmock.h" | 8 #include "testing/gmock/include/gmock/gmock.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 | 10 |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 SetLogAssertHandler(&LogSink); | 175 SetLogAssertHandler(&LogSink); |
176 | 176 |
177 CHECK(mock_log_source.Log()) << uncalled_mock_log_source.Log(); | 177 CHECK(mock_log_source.Log()) << uncalled_mock_log_source.Log(); |
178 PCHECK(!mock_log_source.Log()) << mock_log_source.Log(); | 178 PCHECK(!mock_log_source.Log()) << mock_log_source.Log(); |
179 CHECK_EQ(mock_log_source.Log(), mock_log_source.Log()) | 179 CHECK_EQ(mock_log_source.Log(), mock_log_source.Log()) |
180 << uncalled_mock_log_source.Log(); | 180 << uncalled_mock_log_source.Log(); |
181 CHECK_NE(mock_log_source.Log(), mock_log_source.Log()) | 181 CHECK_NE(mock_log_source.Log(), mock_log_source.Log()) |
182 << mock_log_source.Log(); | 182 << mock_log_source.Log(); |
183 } | 183 } |
184 | 184 |
185 TEST_F(LoggingTest, DebugLoggingReleaseBehavior) { | 185 TEST_F(LoggingTest, DebugLoggingOfficialBuildBehavior) { |
186 #if !defined(NDEBUG) | 186 #if (!defined(LOGGING_IS_OFFICIAL_BUILD)) |
187 int debug_only_variable = 1; | 187 int non_official_build_only_variable = 1; |
188 #endif | 188 #endif |
189 // These should avoid emitting references to |debug_only_variable| | 189 // These should avoid emitting references to |
190 // in release mode. | 190 // |non_official_build_only_variable| in official build. |
191 DLOG_IF(INFO, debug_only_variable) << "test"; | 191 DLOG_IF(INFO, non_official_build_only_variable) << "test"; |
192 DLOG_ASSERT(debug_only_variable) << "test"; | 192 DLOG_ASSERT(non_official_build_only_variable) << "test"; |
193 DPLOG_IF(INFO, debug_only_variable) << "test"; | 193 DPLOG_IF(INFO, non_official_build_only_variable) << "test"; |
194 DVLOG_IF(1, debug_only_variable) << "test"; | 194 DVLOG_IF(1, non_official_build_only_variable) << "test"; |
195 } | 195 } |
196 | 196 |
197 TEST_F(LoggingTest, DcheckStreamsAreLazy) { | 197 TEST_F(LoggingTest, DcheckStreamsAreLazy) { |
198 MockLogSource mock_log_source; | 198 MockLogSource mock_log_source; |
199 EXPECT_CALL(mock_log_source, Log()).Times(0); | 199 EXPECT_CALL(mock_log_source, Log()).Times(0); |
200 #if !defined(LOGGING_IS_OFFICIAL_BUILD) && defined(NDEBUG) && \ | 200 #if !defined(LOGGING_IS_OFFICIAL_BUILD) && defined(NDEBUG) && \ |
201 !defined(DCHECK_ALWAYS_ON) | 201 !defined(DCHECK_ALWAYS_ON) |
202 // Unofficial release build without dcheck enabled. | 202 // Unofficial release build without dcheck enabled. |
203 g_dcheck_state = DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; | 203 g_dcheck_state = DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; |
204 DCHECK(mock_log_source.Log()) << mock_log_source.Log(); | 204 DCHECK(mock_log_source.Log()) << mock_log_source.Log(); |
205 DPCHECK(mock_log_source.Log()) << mock_log_source.Log(); | 205 DPCHECK(mock_log_source.Log()) << mock_log_source.Log(); |
206 DCHECK_EQ(0, 0) << mock_log_source.Log(); | 206 DCHECK_EQ(0, 0) << mock_log_source.Log(); |
207 DCHECK_EQ(mock_log_source.Log(), static_cast<const char*>(NULL)) | 207 DCHECK_EQ(mock_log_source.Log(), static_cast<const char*>(NULL)) |
208 << mock_log_source.Log(); | 208 << mock_log_source.Log(); |
209 #endif | 209 #endif |
210 } | 210 } |
211 | 211 |
| 212 TEST_F(LoggingTest, Dlog) { |
| 213 #if defined(LOGGING_IS_OFFICIAL_BUILD) |
| 214 // Official build. |
| 215 EXPECT_FALSE(DLOG_IS_ON(ERROR)); |
| 216 |
| 217 // Make sure the |undefined_param| is not part of the build. |
| 218 DLOG_IF(ERROR, true) << undefined_param; |
| 219 DPLOG_IF(ERROR, true) << undefined_param; |
| 220 DVLOG_IF(LOG_ERROR, true) << undefined_param; |
| 221 DVPLOG_IF(LOG_ERROR, true) << undefined_param; |
| 222 #elif defined(NDEBUG) |
| 223 // Unofficial release build. |
| 224 g_dlog_state = ENABLE_DLOG_FOR_NON_OFFICIAL_RELEASE_BUILDS; |
| 225 MockLogSource mock_log_source, uncalled_mock_log_source; |
| 226 |
| 227 // VLOG_* is enabled only if the min log level is negative. |
| 228 SetMinLogLevel(-LOG_ERROR); |
| 229 EXPECT_CALL(mock_log_source, Log()).Times(4). |
| 230 WillRepeatedly(Return("check message")); |
| 231 |
| 232 EXPECT_TRUE(DLOG_IS_ON(ERROR)); |
| 233 |
| 234 DLOG_IF(ERROR, true) << mock_log_source.Log(); |
| 235 DPLOG_IF(ERROR, true) << mock_log_source.Log(); |
| 236 DVLOG_IF(LOG_ERROR, true) << mock_log_source.Log(); |
| 237 DVPLOG_IF(LOG_ERROR, true) << mock_log_source.Log(); |
| 238 |
| 239 g_dlog_state = DISABLE_DLOG_FOR_NON_OFFICIAL_RELEASE_BUILDS; |
| 240 |
| 241 EXPECT_CALL(uncalled_mock_log_source, Log()).Times(0); |
| 242 |
| 243 EXPECT_FALSE(DLOG_IS_ON(FATAL)); |
| 244 |
| 245 DLOG_IF(ERROR, true) << uncalled_mock_log_source.Log(); |
| 246 DPLOG_IF(ERROR, true) << uncalled_mock_log_source.Log(); |
| 247 DVLOG_IF(LOG_ERROR, true) << uncalled_mock_log_source.Log(); |
| 248 DVPLOG_IF(LOG_ERROR, true) << uncalled_mock_log_source.Log(); |
| 249 |
| 250 #else |
| 251 // Debug builds. |
| 252 MockLogSource mock_log_source; |
| 253 SetMinLogLevel(-LOG_ERROR); |
| 254 EXPECT_CALL(mock_log_source, Log()).Times(4). |
| 255 WillRepeatedly(Return("check message")); |
| 256 |
| 257 EXPECT_TRUE(DLOG_IS_ON(ERROR)); |
| 258 |
| 259 DLOG_IF(ERROR, true) << mock_log_source.Log(); |
| 260 DPLOG_IF(ERROR, true) << mock_log_source.Log(); |
| 261 DVLOG_IF(LOG_ERROR, true) << mock_log_source.Log(); |
| 262 DVPLOG_IF(LOG_ERROR, true) << mock_log_source.Log(); |
| 263 |
| 264 #endif // defined(LOGGING_IS_OFFICIAL_BUILD) |
| 265 } |
| 266 |
| 267 |
212 TEST_F(LoggingTest, Dcheck) { | 268 TEST_F(LoggingTest, Dcheck) { |
213 #if defined(LOGGING_IS_OFFICIAL_BUILD) | 269 #if defined(LOGGING_IS_OFFICIAL_BUILD) |
214 // Official build. | 270 // Official build. |
215 EXPECT_FALSE(DCHECK_IS_ON()); | 271 EXPECT_FALSE(DCHECK_IS_ON()); |
216 EXPECT_FALSE(DLOG_IS_ON(DCHECK)); | 272 EXPECT_FALSE(DLOG_IS_ON(DCHECK)); |
217 #elif defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON) | 273 #elif defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON) |
218 // Unofficial release build. | 274 // Unofficial release build. |
219 g_dcheck_state = ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; | 275 g_dcheck_state = ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; |
220 SetLogReportHandler(&LogSink); | 276 SetLogReportHandler(&LogSink); |
221 EXPECT_TRUE(DCHECK_IS_ON()); | 277 EXPECT_TRUE(DCHECK_IS_ON()); |
(...skipping 25 matching lines...) Expand all Loading... |
247 // These should still reference |some_variable| so we don't get | 303 // These should still reference |some_variable| so we don't get |
248 // unused variable warnings. | 304 // unused variable warnings. |
249 DCHECK(some_variable) << "test"; | 305 DCHECK(some_variable) << "test"; |
250 DPCHECK(some_variable) << "test"; | 306 DPCHECK(some_variable) << "test"; |
251 DCHECK_EQ(some_variable, 1) << "test"; | 307 DCHECK_EQ(some_variable, 1) << "test"; |
252 } | 308 } |
253 | 309 |
254 } // namespace | 310 } // namespace |
255 | 311 |
256 } // namespace logging | 312 } // namespace logging |
OLD | NEW |