[Lldb-commits] [lldb] Add new Python API `SBCommandInterpreter::GetTranscript()` (PR #90703)

Greg Clayton via lldb-commits lldb-commits at lists.llvm.org
Tue May 7 23:03:27 PDT 2024


================
@@ -85,3 +86,91 @@ def test_command_output(self):
         self.assertEqual(res.GetOutput(), "")
         self.assertIsNotNone(res.GetError())
         self.assertEqual(res.GetError(), "")
+
+    def test_structured_transcript(self):
+        """Test structured transcript generation and retrieval."""
+        # Get command interpreter and create a target
+        self.build()
+        exe = self.getBuildArtifact("a.out")
+
+        target = self.dbg.CreateTarget(exe)
+        self.assertTrue(target, VALID_TARGET)
+
+        ci = self.dbg.GetCommandInterpreter()
+        self.assertTrue(ci, VALID_COMMAND_INTERPRETER)
+
+        # Send a few commands through the command interpreter
+        res = lldb.SBCommandReturnObject()
+        ci.HandleCommand("version", res)
+        ci.HandleCommand("an-unknown-command", res)
+        ci.HandleCommand("breakpoint set -f main.c -l %d" % self.line, res)
+        ci.HandleCommand("r", res)
+        ci.HandleCommand("p a", res)
----------------
clayborg wrote:

Add an example that gets some JSON as outoput like "statistics dump". We need to test that a command can output anything, including things that contain JSON itself and we need to make sure the output string or error string that contains JSON doesn't mess up the structured data (the strings for output need to be sanitized to desensitize any JSON reserved characters (like '{' and '"', etc).

https://github.com/llvm/llvm-project/pull/90703


More information about the lldb-commits mailing list