Author: labath Date: Mon Mar 6 13:10:19 2017 New Revision: 297053 URL: http://llvm.org/viewvc/llvm-project?rev=297053&view=rev Log: 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. Modified: lldb/trunk/source/Utility/Log.cpp lldb/trunk/unittests/Utility/LogTest.cpp Modified: lldb/trunk/source/Utility/Log.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/Log.cpp?rev=297053&r1=297052&r2=297053&view=diff ============================================================================== --- lldb/trunk/source/Utility/Log.cpp (original) +++ lldb/trunk/source/Utility/Log.cpp Mon Mar 6 13:10:19 2017 @@ -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); } Modified: lldb/trunk/unittests/Utility/LogTest.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Utility/LogTest.cpp?rev=297053&r1=297052&r2=297053&view=diff ============================================================================== --- lldb/trunk/unittests/Utility/LogTest.cpp (original) +++ lldb/trunk/unittests/Utility/LogTest.cpp Mon Mar 6 13:10:19 2017 @@ -39,47 +39,11 @@ struct LogChannelTest : public ::testing } }; -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. _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits