summaryrefslogtreecommitdiff
path: root/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py')
-rw-r--r--lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py b/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
index 1761122999f8..8c6b9c74bde4 100644
--- a/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
+++ b/lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py
@@ -60,6 +60,55 @@ class ScriptedProcesTestCase(TestBase):
)
shutil.copy(blueprint_origin_path, blueprint_destination_path)
+ def test_missing_methods_scripted_register_context(self):
+ """Test that we only instanciate scripted processes if they implement
+ all the required abstract methods."""
+ self.build()
+
+ os.environ["SKIP_SCRIPTED_PROCESS_LAUNCH"] = "1"
+
+ def cleanup():
+ del os.environ["SKIP_SCRIPTED_PROCESS_LAUNCH"]
+
+ self.addTearDownHook(cleanup)
+
+ target = self.dbg.CreateTarget(self.getBuildArtifact("a.out"))
+ self.assertTrue(target, VALID_TARGET)
+ log_file = self.getBuildArtifact("script.log")
+ self.runCmd("log enable lldb script -f " + log_file)
+ self.assertTrue(os.path.isfile(log_file))
+ script_path = os.path.join(
+ self.getSourceDir(), "missing_methods_scripted_process.py"
+ )
+ self.runCmd("command script import " + script_path)
+
+ launch_info = lldb.SBLaunchInfo(None)
+ launch_info.SetProcessPluginName("ScriptedProcess")
+ launch_info.SetScriptedProcessClassName(
+ "missing_methods_scripted_process.MissingMethodsScriptedProcess"
+ )
+ error = lldb.SBError()
+
+ process = target.Launch(launch_info, error)
+
+ self.assertFailure(error)
+
+ with open(log_file, "r") as f:
+ log = f.read()
+
+ self.assertIn(
+ "Abstract method MissingMethodsScriptedProcess.read_memory_at_address not implemented",
+ log,
+ )
+ self.assertIn(
+ "Abstract method MissingMethodsScriptedProcess.is_alive not implemented",
+ log,
+ )
+ self.assertIn(
+ "Abstract method MissingMethodsScriptedProcess.get_scripted_thread_plugin not implemented",
+ log,
+ )
+
@skipUnlessDarwin
def test_invalid_scripted_register_context(self):
"""Test that we can launch an lldb scripted process with an invalid