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

Side by Side Diff: base/logging_unittest.cc

Issue 1499693002: Don't evaluate args to LOG(INFO) and LOG(WARNING) in release builds. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: clarify comment Created 5 years 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
« no previous file with comments | « base/logging.cc ('k') | no next file » | 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/compiler_specific.h" 6 #include "base/compiler_specific.h"
7 #include "base/logging.h" 7 #include "base/logging.h"
8 8
9 #include "testing/gmock/include/gmock/gmock.h" 9 #include "testing/gmock/include/gmock/gmock.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 115
116 // LOG_IS_ON(FATAL) should always be true. 116 // LOG_IS_ON(FATAL) should always be true.
117 SetMinLogLevel(LOG_FATAL + 1); 117 SetMinLogLevel(LOG_FATAL + 1);
118 EXPECT_FALSE(LOG_IS_ON(INFO)); 118 EXPECT_FALSE(LOG_IS_ON(INFO));
119 EXPECT_FALSE(LOG_IS_ON(WARNING)); 119 EXPECT_FALSE(LOG_IS_ON(WARNING));
120 EXPECT_FALSE(LOG_IS_ON(ERROR)); 120 EXPECT_FALSE(LOG_IS_ON(ERROR));
121 EXPECT_TRUE(LOG_IS_ON(FATAL)); 121 EXPECT_TRUE(LOG_IS_ON(FATAL));
122 EXPECT_TRUE(kDfatalIsFatal == LOG_IS_ON(DFATAL)); 122 EXPECT_TRUE(kDfatalIsFatal == LOG_IS_ON(DFATAL));
123 } 123 }
124 124
125 TEST_F(LoggingTest, LoggingIsLazy) { 125 TEST_F(LoggingTest, LoggingIsLazyBySeverity) {
126 MockLogSource mock_log_source; 126 MockLogSource mock_log_source;
127 EXPECT_CALL(mock_log_source, Log()).Times(0); 127 EXPECT_CALL(mock_log_source, Log()).Times(0);
128 128
129 SetMinLogLevel(LOG_WARNING); 129 SetMinLogLevel(LOG_WARNING);
130 130
131 EXPECT_FALSE(LOG_IS_ON(INFO)); 131 EXPECT_FALSE(LOG_IS_ON(INFO));
132 EXPECT_FALSE(DLOG_IS_ON(INFO)); 132 EXPECT_FALSE(DLOG_IS_ON(INFO));
133 EXPECT_FALSE(VLOG_IS_ON(1)); 133 EXPECT_FALSE(VLOG_IS_ON(1));
134 134
135 LOG(INFO) << mock_log_source.Log(); 135 LOG(INFO) << mock_log_source.Log();
136 LOG_IF(INFO, false) << mock_log_source.Log(); 136 LOG_IF(INFO, false) << mock_log_source.Log();
137 PLOG(INFO) << mock_log_source.Log(); 137 PLOG(INFO) << mock_log_source.Log();
138 PLOG_IF(INFO, false) << mock_log_source.Log(); 138 PLOG_IF(INFO, false) << mock_log_source.Log();
139 VLOG(1) << mock_log_source.Log(); 139 VLOG(1) << mock_log_source.Log();
140 VLOG_IF(1, true) << mock_log_source.Log(); 140 VLOG_IF(1, true) << mock_log_source.Log();
141 VPLOG(1) << mock_log_source.Log(); 141 VPLOG(1) << mock_log_source.Log();
142 VPLOG_IF(1, true) << mock_log_source.Log(); 142 VPLOG_IF(1, true) << mock_log_source.Log();
143 143
144 DLOG(INFO) << mock_log_source.Log(); 144 DLOG(INFO) << mock_log_source.Log();
145 DLOG_IF(INFO, true) << mock_log_source.Log(); 145 DLOG_IF(INFO, true) << mock_log_source.Log();
146 DPLOG(INFO) << mock_log_source.Log(); 146 DPLOG(INFO) << mock_log_source.Log();
147 DPLOG_IF(INFO, true) << mock_log_source.Log(); 147 DPLOG_IF(INFO, true) << mock_log_source.Log();
148 DVLOG(1) << mock_log_source.Log(); 148 DVLOG(1) << mock_log_source.Log();
149 DVLOG_IF(1, true) << mock_log_source.Log(); 149 DVLOG_IF(1, true) << mock_log_source.Log();
150 DVPLOG(1) << mock_log_source.Log(); 150 DVPLOG(1) << mock_log_source.Log();
151 DVPLOG_IF(1, true) << mock_log_source.Log(); 151 DVPLOG_IF(1, true) << mock_log_source.Log();
152 } 152 }
153 153
154 TEST_F(LoggingTest, LoggingIsLazyByDestination) {
155 MockLogSource mock_log_source;
156 MockLogSource mock_log_source_error;
157 EXPECT_CALL(mock_log_source, Log()).Times(0);
158
159 // Severity >= ERROR is always printed to stderr.
160 EXPECT_CALL(mock_log_source_error, Log()).Times(1).
161 WillRepeatedly(Return("log message"));
162
163 LoggingSettings settings;
164 settings.logging_dest = LOG_NONE;
165 InitLogging(settings);
166
167 LOG(INFO) << mock_log_source.Log();
168 LOG(WARNING) << mock_log_source.Log();
169 LOG(ERROR) << mock_log_source_error.Log();
170 }
171
154 // Official builds have CHECKs directly call BreakDebugger. 172 // Official builds have CHECKs directly call BreakDebugger.
155 #if !defined(OFFICIAL_BUILD) 173 #if !defined(OFFICIAL_BUILD)
156 174
157 TEST_F(LoggingTest, CheckStreamsAreLazy) { 175 TEST_F(LoggingTest, CheckStreamsAreLazy) {
158 MockLogSource mock_log_source, uncalled_mock_log_source; 176 MockLogSource mock_log_source, uncalled_mock_log_source;
159 EXPECT_CALL(mock_log_source, Log()).Times(8). 177 EXPECT_CALL(mock_log_source, Log()).Times(8).
160 WillRepeatedly(Return("check message")); 178 WillRepeatedly(Return("check message"));
161 EXPECT_CALL(uncalled_mock_log_source, Log()).Times(0); 179 EXPECT_CALL(uncalled_mock_log_source, Log()).Times(0);
162 180
163 SetLogAssertHandler(&LogSink); 181 SetLogAssertHandler(&LogSink);
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 std::wstring wstr = L"Hello World"; 291 std::wstring wstr = L"Hello World";
274 std::ostringstream ostr; 292 std::ostringstream ostr;
275 ostr << wstr; 293 ostr << wstr;
276 EXPECT_EQ("Hello World", ostr.str()); 294 EXPECT_EQ("Hello World", ostr.str());
277 } 295 }
278 } // namespace nested_test 296 } // namespace nested_test
279 297
280 } // namespace 298 } // namespace
281 299
282 } // namespace logging 300 } // namespace logging
OLDNEW
« no previous file with comments | « base/logging.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698