Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Side by Side Diff: base/logging_unittest.cc

Issue 8467028: Enable DVLOG on non official release build based on the parameter passed for InitLogging. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: For review. Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/logging.cc ('k') | base/test/test_stub_android.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « base/logging.cc ('k') | base/test/test_stub_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698