summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/source/Utility/Log.cpp2
-rw-r--r--lldb/unittests/Utility/LogTest.cpp77
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.
OpenPOWER on IntegriCloud