| Index: mojo/public/cpp/environment/tests/logging_unittest.cc
|
| diff --git a/mojo/public/cpp/environment/tests/logging_unittest.cc b/mojo/public/cpp/environment/tests/logging_unittest.cc
|
| deleted file mode 100644
|
| index 53a1f8850416757335535719507d47d8b0c3af86..0000000000000000000000000000000000000000
|
| --- a/mojo/public/cpp/environment/tests/logging_unittest.cc
|
| +++ /dev/null
|
| @@ -1,479 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include <stdlib.h>
|
| -
|
| -#include <sstream>
|
| -#include <string>
|
| -
|
| -#include "mojo/public/cpp/environment/environment.h"
|
| -#include "mojo/public/cpp/environment/logging.h"
|
| -#include "mojo/public/cpp/system/macros.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -// A macro, so it can be automatically joined with other string literals. (Not
|
| -// simply __FILE__, since that may contain a path.)
|
| -#define OUR_FILENAME "logging_unittest.cc"
|
| -
|
| -namespace mojo {
|
| -namespace {
|
| -
|
| -class PtrToMemberHelper {
|
| - public:
|
| - int member;
|
| -};
|
| -
|
| -bool DcheckTestHelper(bool* was_called) {
|
| - *was_called = true;
|
| - return false;
|
| -}
|
| -
|
| -class LoggingTest : public testing::Test {
|
| - public:
|
| - LoggingTest() : environment_(nullptr, &kMockLogger) {
|
| - minimum_log_level_ = MOJO_LOG_LEVEL_INFO;
|
| - ResetMockLogger();
|
| - }
|
| - ~LoggingTest() override {}
|
| -
|
| - protected:
|
| - // Note: Does not reset |minimum_log_level_|.
|
| - static void ResetMockLogger() {
|
| - log_message_was_called_ = false;
|
| - last_log_level_ = MOJO_LOG_LEVEL_INFO;
|
| - last_message_.clear();
|
| - }
|
| -
|
| - // A function returning |bool| that shouldn't be called.
|
| - static bool NotCalledCondition() {
|
| - not_called_condition_was_called_ = true;
|
| - return false;
|
| - }
|
| -
|
| - static bool log_message_was_called() { return log_message_was_called_; }
|
| - static MojoLogLevel last_log_level() { return last_log_level_; }
|
| - static const std::string& last_message() { return last_message_; }
|
| - static bool not_called_condition_was_called() {
|
| - return not_called_condition_was_called_;
|
| - }
|
| -
|
| - private:
|
| - // Note: We record calls even if |log_level| is below |minimum_log_level_|
|
| - // (since the macros should mostly avoid this, and we want to be able to check
|
| - // that they do).
|
| - static void MockLogMessage(MojoLogLevel log_level, const char* message) {
|
| - log_message_was_called_ = true;
|
| - last_log_level_ = log_level;
|
| - last_message_ = message;
|
| - }
|
| -
|
| - static MojoLogLevel MockGetMinimumLogLevel() { return minimum_log_level_; }
|
| -
|
| - static void MockSetMinimumLogLevel(MojoLogLevel minimum_log_level) {
|
| - minimum_log_level_ = minimum_log_level;
|
| - }
|
| -
|
| - Environment environment_;
|
| -
|
| - static const MojoLogger kMockLogger;
|
| - static MojoLogLevel minimum_log_level_;
|
| - static bool log_message_was_called_;
|
| - static MojoLogLevel last_log_level_;
|
| - static std::string last_message_;
|
| - static bool not_called_condition_was_called_;
|
| -
|
| - MOJO_DISALLOW_COPY_AND_ASSIGN(LoggingTest);
|
| -};
|
| -
|
| -// static
|
| -const MojoLogger LoggingTest::kMockLogger = {
|
| - &LoggingTest::MockLogMessage,
|
| - &LoggingTest::MockGetMinimumLogLevel,
|
| - &LoggingTest::MockSetMinimumLogLevel};
|
| -
|
| -// static
|
| -MojoLogLevel LoggingTest::minimum_log_level_ = MOJO_LOG_LEVEL_INFO;
|
| -
|
| -// static
|
| -bool LoggingTest::log_message_was_called_ = MOJO_LOG_LEVEL_INFO;
|
| -
|
| -// static
|
| -MojoLogLevel LoggingTest::last_log_level_ = MOJO_LOG_LEVEL_INFO;
|
| -
|
| -// static
|
| -std::string LoggingTest::last_message_;
|
| -
|
| -// static
|
| -bool LoggingTest::not_called_condition_was_called_ = false;
|
| -
|
| -std::string ExpectedLogMessage(int line, const char* message) {
|
| - std::ostringstream s;
|
| - s << OUR_FILENAME "(" << line << "): " << message;
|
| - return s.str();
|
| -}
|
| -
|
| -TEST_F(LoggingTest, InternalLogMessage) {
|
| - internal::LogMessage("foo.cc", 123, MOJO_LOG_LEVEL_INFO).stream() << "hello "
|
| - << "world";
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ("foo.cc(123): hello world", last_message());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - internal::LogMessage("./path/to/foo.cc", 123, MOJO_LOG_LEVEL_WARNING).stream()
|
| - << "hello "
|
| - << "world";
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_WARNING, last_log_level());
|
| - EXPECT_EQ("foo.cc(123): hello world", last_message());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - internal::LogMessage("/path/to/foo.cc", 123, MOJO_LOG_LEVEL_ERROR).stream()
|
| - << "hello "
|
| - << "world";
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ("foo.cc(123): hello world", last_message());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - internal::LogMessage("path/to/foo.cc", 123, MOJO_LOG_LEVEL_FATAL).stream()
|
| - << "hello "
|
| - << "world";
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_FATAL, last_log_level());
|
| - EXPECT_EQ("foo.cc(123): hello world", last_message());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - internal::LogMessage(".\\xy\\foo.cc", 123, MOJO_LOG_LEVEL_VERBOSE).stream()
|
| - << "hello "
|
| - << "world";
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_VERBOSE, last_log_level());
|
| - EXPECT_EQ("foo.cc(123): hello world", last_message());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - internal::LogMessage("xy\\foo.cc", 123, MOJO_LOG_LEVEL_VERBOSE - 1).stream()
|
| - << "hello "
|
| - << "world";
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_VERBOSE - 1, last_log_level());
|
| - EXPECT_EQ("foo.cc(123): hello world", last_message());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - internal::LogMessage("C:\\xy\\foo.cc", 123, MOJO_LOG_LEVEL_VERBOSE - 9)
|
| - .stream()
|
| - << "hello "
|
| - << "world";
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_VERBOSE - 9, last_log_level());
|
| - EXPECT_EQ("foo.cc(123): hello world", last_message());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - internal::LogMessage(__FILE__, 123, MOJO_LOG_LEVEL_INFO).stream() << "hello "
|
| - << "world";
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(OUR_FILENAME "(123): hello world", last_message());
|
| -}
|
| -
|
| -TEST_F(LoggingTest, LogStream) {
|
| - MOJO_LOG_STREAM(INFO) << "hello";
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_LOG_STREAM(ERROR) << "hi " << 123;
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hi 123"), last_message());
|
| -}
|
| -
|
| -TEST_F(LoggingTest, LazyLogStream) {
|
| - MOJO_LAZY_LOG_STREAM(INFO, true) << "hello";
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_LAZY_LOG_STREAM(ERROR, true) << "hi " << 123;
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hi 123"), last_message());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_LAZY_LOG_STREAM(INFO, false) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_LAZY_LOG_STREAM(FATAL, false) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - PtrToMemberHelper helper;
|
| - helper.member = 1;
|
| - int PtrToMemberHelper::*member_ptr = &PtrToMemberHelper::member;
|
| -
|
| - // This probably fails to compile if we forget to parenthesize the condition
|
| - // in the macro (.* has lower precedence than !, which can't apply to
|
| - // |helper|).
|
| - MOJO_LAZY_LOG_STREAM(ERROR, helper.*member_ptr == 1) << "hello";
|
| - EXPECT_TRUE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_LAZY_LOG_STREAM(WARNING, helper.*member_ptr == 0) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -}
|
| -
|
| -TEST_F(LoggingTest, ShouldLog) {
|
| - // We start at |MOJO_LOG_LEVEL_INFO|.
|
| - EXPECT_FALSE(MOJO_SHOULD_LOG(VERBOSE));
|
| - EXPECT_TRUE(MOJO_SHOULD_LOG(INFO));
|
| - EXPECT_TRUE(MOJO_SHOULD_LOG(WARNING));
|
| - EXPECT_TRUE(MOJO_SHOULD_LOG(ERROR));
|
| - EXPECT_TRUE(MOJO_SHOULD_LOG(FATAL));
|
| -
|
| - Environment::GetDefaultLogger()->SetMinimumLogLevel(MOJO_LOG_LEVEL_ERROR);
|
| - EXPECT_FALSE(MOJO_SHOULD_LOG(VERBOSE));
|
| - EXPECT_FALSE(MOJO_SHOULD_LOG(INFO));
|
| - EXPECT_FALSE(MOJO_SHOULD_LOG(WARNING));
|
| - EXPECT_TRUE(MOJO_SHOULD_LOG(ERROR));
|
| - EXPECT_TRUE(MOJO_SHOULD_LOG(FATAL));
|
| -
|
| - Environment::GetDefaultLogger()->SetMinimumLogLevel(MOJO_LOG_LEVEL_VERBOSE -
|
| - 1);
|
| - EXPECT_TRUE(MOJO_SHOULD_LOG(VERBOSE));
|
| - EXPECT_TRUE(MOJO_SHOULD_LOG(INFO));
|
| - EXPECT_TRUE(MOJO_SHOULD_LOG(WARNING));
|
| - EXPECT_TRUE(MOJO_SHOULD_LOG(ERROR));
|
| - EXPECT_TRUE(MOJO_SHOULD_LOG(FATAL));
|
| -}
|
| -
|
| -TEST_F(LoggingTest, Log) {
|
| - // We start at |MOJO_LOG_LEVEL_INFO|.
|
| - MOJO_LOG(VERBOSE) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_LOG(INFO) << "hello";
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_LOG(ERROR) << "hello";
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - Environment::GetDefaultLogger()->SetMinimumLogLevel(MOJO_LOG_LEVEL_ERROR);
|
| -
|
| - MOJO_LOG(VERBOSE) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_LOG(INFO) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_LOG(ERROR) << "hello";
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
| -}
|
| -
|
| -TEST_F(LoggingTest, LogIf) {
|
| - // We start at |MOJO_LOG_LEVEL_INFO|.
|
| - MOJO_LOG_IF(VERBOSE, true) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_LOG_IF(VERBOSE, false) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| - Environment::GetDefaultLogger()->SetMinimumLogLevel(MOJO_LOG_LEVEL_ERROR);
|
| -
|
| - bool x = true;
|
| - // Also try to make sure that we parenthesize the condition properly.
|
| - MOJO_LOG_IF(INFO, false || x) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_LOG_IF(INFO, 0 != 1) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_LOG_IF(WARNING, 1 + 1 == 2) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_LOG_IF(ERROR, 1 * 2 == 2) << "hello";
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_ERROR, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 3, "hello"), last_message());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_LOG_IF(FATAL, 1 * 2 == 3) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - // |MOJO_LOG_IF()| shouldn't evaluate its condition if the level is below the
|
| - // minimum.
|
| - MOJO_LOG_IF(INFO, NotCalledCondition()) << "hello";
|
| - EXPECT_FALSE(not_called_condition_was_called());
|
| - EXPECT_FALSE(log_message_was_called());
|
| -}
|
| -
|
| -TEST_F(LoggingTest, Check) {
|
| - MOJO_CHECK(true) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - PtrToMemberHelper helper;
|
| - helper.member = 0;
|
| - int PtrToMemberHelper::*member_ptr = &PtrToMemberHelper::member;
|
| -
|
| - // Also try to make sure that we parenthesize the condition properly.
|
| - MOJO_CHECK(helper.*member_ptr == 1) << "hello";
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_FATAL, last_log_level());
|
| - // Different compilers have different ideas about the line number of a split
|
| - // line.
|
| - int line = __LINE__;
|
| - EXPECT_EQ(ExpectedLogMessage(line - 5,
|
| - "Check failed: helper.*member_ptr == 1. hello"),
|
| - last_message());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - // Also test a "naked" |MOJO_CHECK()|s.
|
| - MOJO_CHECK(1 + 2 == 3);
|
| - EXPECT_FALSE(log_message_was_called());
|
| -}
|
| -
|
| -TEST_F(LoggingTest, Dlog) {
|
| - // We start at |MOJO_LOG_LEVEL_INFO|.
|
| - MOJO_DLOG(VERBOSE) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_DLOG(INFO) << "hello";
|
| -#ifdef NDEBUG
|
| - EXPECT_FALSE(log_message_was_called());
|
| -#else
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 6, "hello"), last_message());
|
| -#endif
|
| -}
|
| -
|
| -TEST_F(LoggingTest, DlogIf) {
|
| - // We start at |MOJO_LOG_LEVEL_INFO|. It shouldn't evaluate the condition in
|
| - // this case.
|
| - MOJO_DLOG_IF(VERBOSE, NotCalledCondition()) << "hello";
|
| - EXPECT_FALSE(not_called_condition_was_called());
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_DLOG_IF(INFO, 1 == 0) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_DLOG_IF(INFO, 1 == 1) << "hello";
|
| -#ifdef NDEBUG
|
| - EXPECT_FALSE(log_message_was_called());
|
| -#else
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_INFO, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 6, "hello"), last_message());
|
| -#endif
|
| -
|
| - ResetMockLogger();
|
| -
|
| -// |MOJO_DLOG_IF()| shouldn't compile its condition for non-debug builds.
|
| -#ifndef NDEBUG
|
| - bool debug_only = true;
|
| -#endif
|
| - MOJO_DLOG_IF(WARNING, debug_only) << "hello";
|
| -#ifdef NDEBUG
|
| - EXPECT_FALSE(log_message_was_called());
|
| -#else
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_WARNING, last_log_level());
|
| - EXPECT_EQ(ExpectedLogMessage(__LINE__ - 6, "hello"), last_message());
|
| -#endif
|
| -}
|
| -
|
| -TEST_F(LoggingTest, Dcheck) {
|
| - MOJO_DCHECK(true);
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - MOJO_DCHECK(true) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -
|
| - ResetMockLogger();
|
| -
|
| - // |MOJO_DCHECK()| should compile (but not evaluate) its condition even for
|
| - // non-debug builds. (Hopefully, we'll get an unused variable error if it
|
| - // fails to compile the condition.)
|
| - bool was_called = false;
|
| - MOJO_DCHECK(DcheckTestHelper(&was_called)) << "hello";
|
| -#ifdef NDEBUG
|
| - EXPECT_FALSE(was_called);
|
| - EXPECT_FALSE(log_message_was_called());
|
| -#else
|
| - EXPECT_TRUE(was_called);
|
| - EXPECT_TRUE(log_message_was_called());
|
| - EXPECT_EQ(MOJO_LOG_LEVEL_FATAL, last_log_level());
|
| - // Different compilers have different ideas about the line number of a split
|
| - // line.
|
| - int line = __LINE__;
|
| - EXPECT_EQ(
|
| - ExpectedLogMessage(line - 10,
|
| - "Check failed: DcheckTestHelper(&was_called). hello"),
|
| - last_message());
|
| -#endif
|
| -
|
| - ResetMockLogger();
|
| -
|
| - // Also try to make sure that we parenthesize the condition properly.
|
| - bool x = true;
|
| - MOJO_DCHECK(false || x) << "hello";
|
| - EXPECT_FALSE(log_message_was_called());
|
| -}
|
| -
|
| -} // namespace
|
| -} // namespace mojo
|
|
|