diff options
author | Pavel Labath <labath@google.com> | 2017-03-06 19:10:19 +0000 |
---|---|---|
committer | Pavel Labath <labath@google.com> | 2017-03-06 19:10:19 +0000 |
commit | a96eac62d6b4180969876f4be0340b7f03b0b4cd (patch) | |
tree | c026bfeaf4c7098403217895fc296a6ac6543b0f /lldb | |
parent | 0cb2ee9287a7eba197754888367b536471320930 (diff) | |
download | bcm5719-llvm-a96eac62d6b4180969876f4be0340b7f03b0b4cd.tar.gz bcm5719-llvm-a96eac62d6b4180969876f4be0340b7f03b0b4cd.zip |
Update log_options unit test
it was accessing the details of the Log class directly. Let it go
through the channel class instead.
This also discovered a bug when we were setting but not clearing the log
options when enabling a channel.
llvm-svn: 297053
Diffstat (limited to 'lldb')
-rw-r--r-- | lldb/source/Utility/Log.cpp | 2 | ||||
-rw-r--r-- | lldb/unittests/Utility/LogTest.cpp | 77 |
2 files changed, 42 insertions, 37 deletions
diff --git a/lldb/source/Utility/Log.cpp b/lldb/source/Utility/Log.cpp index 9f2a9a6a275..c87e289aff4 100644 --- a/lldb/source/Utility/Log.cpp +++ b/lldb/source/Utility/Log.cpp @@ -89,7 +89,7 @@ void Log::Channel::Enable(Log &log, uint32_t options, uint32_t flags) { log.GetMask().Set(flags); if (log.GetMask().Get()) { - log.GetOptions().Set(options); + log.GetOptions().Reset(options); log.SetStream(stream_sp); log_ptr.store(&log, std::memory_order_release); } diff --git a/lldb/unittests/Utility/LogTest.cpp b/lldb/unittests/Utility/LogTest.cpp index 474b0345507..f436a2414e8 100644 --- a/lldb/unittests/Utility/LogTest.cpp +++ b/lldb/unittests/Utility/LogTest.cpp @@ -39,47 +39,11 @@ struct LogChannelTest : public ::testing::Test { } }; -static std::string GetLogString(uint32_t log_options, const char *format, - int arg) { - std::string stream_string; - std::shared_ptr<llvm::raw_string_ostream> stream_sp( - new llvm::raw_string_ostream(stream_string)); - Log log_(stream_sp); - log_.GetOptions().Reset(log_options); - Log *log = &log_; - LLDB_LOG(log, format, arg); - return stream_sp->str(); -} - TEST(LogTest, LLDB_LOG_nullptr) { Log *log = nullptr; LLDB_LOG(log, "{0}", 0); // Shouldn't crash } -TEST(LogTest, log_options) { - EXPECT_EQ("Hello World 47\n", GetLogString(0, "Hello World {0}", 47)); - EXPECT_EQ("Hello World 47\n", - GetLogString(LLDB_LOG_OPTION_THREADSAFE, "Hello World {0}", 47)); - - { - std::string msg = - GetLogString(LLDB_LOG_OPTION_PREPEND_SEQUENCE, "Hello World {0}", 47); - int seq_no; - EXPECT_EQ(1, sscanf(msg.c_str(), "%d Hello World 47", &seq_no)); - } - - EXPECT_EQ( - "LogTest.cpp:GetLogString Hello " - "World 47\n", - GetLogString(LLDB_LOG_OPTION_PREPEND_FILE_FUNCTION, "Hello World {0}", 47)); - - EXPECT_EQ(llvm::formatv("[{0,0+4}/{1,0+4}] Hello World 47\n", ::getpid(), - llvm::get_threadid()) - .str(), - GetLogString(LLDB_LOG_OPTION_PREPEND_PROC_AND_THREAD, - "Hello World {0}", 47)); -} - TEST(LogTest, Register) { llvm::llvm_shutdown_obj obj; Log::Register("chan", test_channel); @@ -187,6 +151,47 @@ TEST_F(LogChannelTest, List) { EXPECT_EQ("Invalid log channel 'chanchan'.\n", str.GetString().str()); } +static std::string GetLogString(uint32_t log_options, const char *format, + int arg) { + std::string message; + std::shared_ptr<llvm::raw_string_ostream> stream_sp( + new llvm::raw_string_ostream(message)); + StreamString err; + EXPECT_TRUE(Log::EnableLogChannel(stream_sp, log_options, "chan", {}, err)); + + Log *log = test_channel.GetLogIfAll(FOO); + EXPECT_NE(nullptr, log); + + LLDB_LOG(log, format, arg); + EXPECT_TRUE(Log::DisableLogChannel("chan", {}, err)); + + return stream_sp->str(); +} + +TEST_F(LogChannelTest, log_options) { + EXPECT_EQ("Hello World 47\n", GetLogString(0, "Hello World {0}", 47)); + EXPECT_EQ("Hello World 47\n", + GetLogString(LLDB_LOG_OPTION_THREADSAFE, "Hello World {0}", 47)); + + { + std::string msg = + GetLogString(LLDB_LOG_OPTION_PREPEND_SEQUENCE, "Hello World {0}", 47); + int seq_no; + EXPECT_EQ(1, sscanf(msg.c_str(), "%d Hello World 47", &seq_no)); + } + + EXPECT_EQ( + "LogTest.cpp:GetLogString Hello " + "World 47\n", + GetLogString(LLDB_LOG_OPTION_PREPEND_FILE_FUNCTION, "Hello World {0}", 47)); + + EXPECT_EQ(llvm::formatv("[{0,0+4}/{1,0+4}] Hello World 47\n", ::getpid(), + llvm::get_threadid()) + .str(), + GetLogString(LLDB_LOG_OPTION_PREPEND_PROC_AND_THREAD, + "Hello World {0}", 47)); +} + TEST_F(LogChannelTest, LogThread) { // Test that we are able to concurrently write to a log channel and disable // it. |