[Lldb-commits] [lldb] r297053 - Update log_options unit test

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Mon Mar 6 11:10:19 PST 2017


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.




More information about the lldb-commits mailing list