diff options
Diffstat (limited to 'lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py')
| -rw-r--r-- | lldb/test/API/functionalities/scripted_process/TestScriptedProcess.py | 49 |
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 |
