[Lldb-commits] [lldb] [lldb][PlatformDarwin][test] Move Platform test utilities into common header for re-use (PR #187036)
Michael Buch via lldb-commits
lldb-commits at lists.llvm.org
Tue Mar 17 08:01:20 PDT 2026
https://github.com/Michael137 updated https://github.com/llvm/llvm-project/pull/187036
>From ef399b1c3101d12ad705181936d14e2087e08d13 Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuch12 at gmail.com>
Date: Tue, 17 Mar 2026 14:57:17 +0000
Subject: [PATCH 1/2] [lldb][PlatformDarwin][test] Move Platform test utilities
into common header for re-use
In https://github.com/llvm/llvm-project/pull/187031 I'm planning on
re-using the `MockScriptInterpreterPython` and `CreateFile` API from a
different unit-test in `Platform/`.
---
lldb/unittests/Platform/CMakeLists.txt | 1 +
.../unittests/Platform/PlatformDarwinTest.cpp | 64 +------------------
lldb/unittests/Platform/TestUtils.cpp | 42 ++++++++++++
lldb/unittests/Platform/TestUtils.h | 59 +++++++++++++++++
4 files changed, 105 insertions(+), 61 deletions(-)
create mode 100644 lldb/unittests/Platform/TestUtils.cpp
create mode 100644 lldb/unittests/Platform/TestUtils.h
diff --git a/lldb/unittests/Platform/CMakeLists.txt b/lldb/unittests/Platform/CMakeLists.txt
index a96636fc3fd59..f8755432bf6d7 100644
--- a/lldb/unittests/Platform/CMakeLists.txt
+++ b/lldb/unittests/Platform/CMakeLists.txt
@@ -1,4 +1,5 @@
add_lldb_unittest(LLDBPlatformTests
+ TestUtils.cpp
PlatformAppleSimulatorTest.cpp
PlatformDarwinTest.cpp
PlatformMacOSXTest.cpp
diff --git a/lldb/unittests/Platform/PlatformDarwinTest.cpp b/lldb/unittests/Platform/PlatformDarwinTest.cpp
index cd7cc80847302..8541e215dc853 100644
--- a/lldb/unittests/Platform/PlatformDarwinTest.cpp
+++ b/lldb/unittests/Platform/PlatformDarwinTest.cpp
@@ -8,6 +8,8 @@
#include "gtest/gtest.h"
+#include "TestUtils.h"
+
#include "Plugins/Platform/MacOSX/PlatformDarwin.h"
#include "Plugins/Platform/MacOSX/PlatformMacOSX.h"
#include "Plugins/Platform/MacOSX/PlatformRemoteMacOSX.h"
@@ -16,7 +18,7 @@
#include "lldb/Core/Debugger.h"
#include "lldb/Core/PluginManager.h"
#include "lldb/Host/HostInfo.h"
-#include "lldb/Interpreter/ScriptInterpreter.h"
+#include "lldb/Target/Platform.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/FileSystem.h"
@@ -28,54 +30,6 @@
using namespace lldb;
using namespace lldb_private;
-namespace {
-class MockScriptInterpreterPython : public ScriptInterpreter {
-public:
- MockScriptInterpreterPython(Debugger &debugger)
- : ScriptInterpreter(debugger,
- lldb::ScriptLanguage::eScriptLanguagePython) {}
-
- ~MockScriptInterpreterPython() override = default;
-
- bool ExecuteOneLine(llvm::StringRef command, CommandReturnObject *,
- const ExecuteScriptOptions &) override {
- return false;
- }
-
- void ExecuteInterpreterLoop() override {}
-
- static void Initialize() {
- PluginManager::RegisterPlugin(GetPluginNameStatic(),
- GetPluginDescriptionStatic(),
- lldb::eScriptLanguagePython, CreateInstance);
- }
-
- static void Terminate() { PluginManager::UnregisterPlugin(CreateInstance); }
-
- bool IsReservedWord(const char *word) override {
- return llvm::is_contained({"import", "mykeyword_1_1_1"},
- llvm::StringRef(word));
- }
-
- static lldb::ScriptInterpreterSP CreateInstance(Debugger &debugger) {
- return std::make_shared<MockScriptInterpreterPython>(debugger);
- }
-
- static llvm::StringRef GetPluginNameStatic() {
- return "MockScriptInterpreterPython";
- }
-
- static llvm::StringRef GetPluginDescriptionStatic() {
- return "MockScriptInterpreterPython";
- }
-
- // PluginInterface protocol
- llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
-};
-
-LLDB_PLUGIN_DEFINE(MockScriptInterpreterPython)
-} // namespace
-
struct PlatformDarwinLocateTest : public testing::Test {
protected:
void SetUp() override {
@@ -144,18 +98,6 @@ struct PlatformDarwinLocateTest : public testing::Test {
subsystems;
};
-static std::string CreateFile(llvm::StringRef filename,
- llvm::SmallString<128> parent_dir) {
- llvm::SmallString<128> path(parent_dir);
- llvm::sys::path::append(path, filename);
- int fd;
- std::error_code ret = llvm::sys::fs::openFileForWrite(path, fd);
- assert(!ret && "Failed to create test file.");
- ::close(fd);
-
- return path.c_str();
-}
-
TEST(PlatformDarwinTest, TestParseVersionBuildDir) {
llvm::VersionTuple V;
llvm::StringRef D;
diff --git a/lldb/unittests/Platform/TestUtils.cpp b/lldb/unittests/Platform/TestUtils.cpp
new file mode 100644
index 0000000000000..7330395c803f8
--- /dev/null
+++ b/lldb/unittests/Platform/TestUtils.cpp
@@ -0,0 +1,42 @@
+//===-- TestUtils.cpp -----------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "TestUtils.h"
+
+#include "lldb/Core/PluginManager.h"
+
+using namespace lldb;
+using namespace lldb_private;
+
+MockScriptInterpreterPython::MockScriptInterpreterPython(Debugger &debugger)
+ : ScriptInterpreter(debugger, lldb::ScriptLanguage::eScriptLanguagePython) {
+}
+
+void MockScriptInterpreterPython::Initialize() {
+ PluginManager::RegisterPlugin(GetPluginNameStatic(),
+ GetPluginDescriptionStatic(),
+ lldb::eScriptLanguagePython, CreateInstance);
+}
+
+void MockScriptInterpreterPython::Terminate() {
+ PluginManager::UnregisterPlugin(CreateInstance);
+}
+
+LLDB_PLUGIN_DEFINE(MockScriptInterpreterPython)
+
+std::string lldb_private::CreateFile(llvm::StringRef filename,
+ llvm::SmallString<128> parent_dir) {
+ llvm::SmallString<128> path(parent_dir);
+ llvm::sys::path::append(path, filename);
+ int fd;
+ std::error_code ret = llvm::sys::fs::openFileForWrite(path, fd);
+ assert(!ret && "Failed to create test file.");
+ ::close(fd);
+
+ return path.c_str();
+}
diff --git a/lldb/unittests/Platform/TestUtils.h b/lldb/unittests/Platform/TestUtils.h
new file mode 100644
index 0000000000000..1cb7b0b20d621
--- /dev/null
+++ b/lldb/unittests/Platform/TestUtils.h
@@ -0,0 +1,59 @@
+//===-- TestUtils.h -------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_UNITTESTS_PLATFORM_TESTUTILS
+#define LLDB_UNITTESTS_PLATFORM_TESTUTILS
+
+#include "lldb/Interpreter/ScriptInterpreter.h"
+
+namespace lldb_private {
+class Debugger;
+
+class MockScriptInterpreterPython : public ScriptInterpreter {
+public:
+ MockScriptInterpreterPython(Debugger &debugger);
+ ~MockScriptInterpreterPython() override = default;
+
+ bool ExecuteOneLine(llvm::StringRef command, CommandReturnObject *,
+ const ExecuteScriptOptions &) override {
+ return false;
+ }
+
+ void ExecuteInterpreterLoop() override {}
+
+ static void Initialize();
+
+ static void Terminate();
+
+ bool IsReservedWord(const char *word) override {
+ return llvm::is_contained({"import", "mykeyword_1_1_1"},
+ llvm::StringRef(word));
+ }
+
+ static lldb::ScriptInterpreterSP CreateInstance(Debugger &debugger) {
+ return std::make_shared<MockScriptInterpreterPython>(debugger);
+ }
+
+ static llvm::StringRef GetPluginNameStatic() {
+ return "MockScriptInterpreterPython";
+ }
+
+ static llvm::StringRef GetPluginDescriptionStatic() {
+ return "MockScriptInterpreterPython";
+ }
+
+ // PluginInterface protocol
+ llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
+};
+
+std::string CreateFile(llvm::StringRef filename,
+ llvm::SmallString<128> parent_dir);
+
+} // namespace lldb_private
+
+#endif // LLDB_UNITTESTS_PLATFORM_TESTUTILS_H_IN
>From 68e3c3f047b597679d69c1a48d6e0b7690a869b9 Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuch12 at gmail.com>
Date: Tue, 17 Mar 2026 15:01:05 +0000
Subject: [PATCH 2/2] fixup! remove redundant header
---
lldb/unittests/Platform/PlatformDarwinTest.cpp | 1 -
1 file changed, 1 deletion(-)
diff --git a/lldb/unittests/Platform/PlatformDarwinTest.cpp b/lldb/unittests/Platform/PlatformDarwinTest.cpp
index 8541e215dc853..448dcab7070df 100644
--- a/lldb/unittests/Platform/PlatformDarwinTest.cpp
+++ b/lldb/unittests/Platform/PlatformDarwinTest.cpp
@@ -18,7 +18,6 @@
#include "lldb/Core/Debugger.h"
#include "lldb/Core/PluginManager.h"
#include "lldb/Host/HostInfo.h"
-#include "lldb/Target/Platform.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/FileSystem.h"
More information about the lldb-commits
mailing list