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

Side by Side Diff: base/logging_unittest.cc

Issue 7719007: Add a gyp flag to enable dcheck by default in release without (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 3 months 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.h ('k') | build/common.gypi » ('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 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 // in release mode. 190 // in release mode.
191 DLOG_IF(INFO, debug_only_variable) << "test"; 191 DLOG_IF(INFO, debug_only_variable) << "test";
192 DLOG_ASSERT(debug_only_variable) << "test"; 192 DLOG_ASSERT(debug_only_variable) << "test";
193 DPLOG_IF(INFO, debug_only_variable) << "test"; 193 DPLOG_IF(INFO, debug_only_variable) << "test";
194 DVLOG_IF(1, debug_only_variable) << "test"; 194 DVLOG_IF(1, debug_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 200 #if !defined(LOGGING_IS_OFFICIAL_BUILD) && defined(NDEBUG) && \
201 #if !defined(LOGGING_IS_OFFICIAL_BUILD) && defined(NDEBUG) 201 !defined(DCHECK_ALWAYS_ON)
202 // Unofficial release build. 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 // !defined(LOGGING_IS_OFFICIAL_BUILD) && defined(NDEBUG) 209 #endif
210 } 210 }
211 211
212 TEST_F(LoggingTest, Dcheck) { 212 TEST_F(LoggingTest, Dcheck) {
213 #if defined(LOGGING_IS_OFFICIAL_BUILD) 213 #if defined(LOGGING_IS_OFFICIAL_BUILD)
214 // Official build. 214 // Official build.
215 EXPECT_FALSE(DCHECK_IS_ON()); 215 EXPECT_FALSE(DCHECK_IS_ON());
216 EXPECT_FALSE(DLOG_IS_ON(DCHECK)); 216 EXPECT_FALSE(DLOG_IS_ON(DCHECK));
217 #elif defined(NDEBUG) 217 #elif defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON)
218 // Unofficial release build. 218 // Unofficial release build.
219 g_dcheck_state = ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; 219 g_dcheck_state = ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS;
220 SetLogReportHandler(&LogSink); 220 SetLogReportHandler(&LogSink);
221 EXPECT_TRUE(DCHECK_IS_ON()); 221 EXPECT_TRUE(DCHECK_IS_ON());
222 EXPECT_FALSE(DLOG_IS_ON(DCHECK)); 222 EXPECT_FALSE(DLOG_IS_ON(DCHECK));
223 #elif defined(NDEBUG) && defined(DCHECK_ALWAYS_ON)
224 // Unofficial release build with real DCHECKS.
225 g_dcheck_state = ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS;
226 SetLogAssertHandler(&LogSink);
227 EXPECT_TRUE(DCHECK_IS_ON());
228 EXPECT_FALSE(DLOG_IS_ON(DCHECK));
223 #else 229 #else
224 // Unofficial debug build. 230 // Unofficial debug build.
225 SetLogAssertHandler(&LogSink); 231 SetLogAssertHandler(&LogSink);
226 EXPECT_TRUE(DCHECK_IS_ON()); 232 EXPECT_TRUE(DCHECK_IS_ON());
227 EXPECT_TRUE(DLOG_IS_ON(DCHECK)); 233 EXPECT_TRUE(DLOG_IS_ON(DCHECK));
228 #endif // defined(LOGGING_IS_OFFICIAL_BUILD) 234 #endif // defined(LOGGING_IS_OFFICIAL_BUILD)
229 235
230 EXPECT_EQ(0, log_sink_call_count); 236 EXPECT_EQ(0, log_sink_call_count);
231 DCHECK(false); 237 DCHECK(false);
232 EXPECT_EQ(DCHECK_IS_ON() ? 1 : 0, log_sink_call_count); 238 EXPECT_EQ(DCHECK_IS_ON() ? 1 : 0, log_sink_call_count);
233 DPCHECK(false); 239 DPCHECK(false);
234 EXPECT_EQ(DCHECK_IS_ON() ? 2 : 0, log_sink_call_count); 240 EXPECT_EQ(DCHECK_IS_ON() ? 2 : 0, log_sink_call_count);
235 DCHECK_EQ(0, 1); 241 DCHECK_EQ(0, 1);
236 EXPECT_EQ(DCHECK_IS_ON() ? 3 : 0, log_sink_call_count); 242 EXPECT_EQ(DCHECK_IS_ON() ? 3 : 0, log_sink_call_count);
237 } 243 }
238 244
239 TEST_F(LoggingTest, DcheckReleaseBehavior) { 245 TEST_F(LoggingTest, DcheckReleaseBehavior) {
240 int some_variable = 1; 246 int some_variable = 1;
241 // These should still reference |some_variable| so we don't get 247 // These should still reference |some_variable| so we don't get
242 // unused variable warnings. 248 // unused variable warnings.
243 DCHECK(some_variable) << "test"; 249 DCHECK(some_variable) << "test";
244 DPCHECK(some_variable) << "test"; 250 DPCHECK(some_variable) << "test";
245 DCHECK_EQ(some_variable, 1) << "test"; 251 DCHECK_EQ(some_variable, 1) << "test";
246 } 252 }
247 253
248 } // namespace 254 } // namespace
249 255
250 } // namespace logging 256 } // namespace logging
OLDNEW
« no previous file with comments | « base/logging.h ('k') | build/common.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698