================ @@ -85,3 +86,84 @@ 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) + total_number_of_commands = 5 + + # Retrieve the transcript and convert it into a Python object + transcript = ci.GetTranscript() + self.assertTrue(transcript.IsValid()) + + stream = lldb.SBStream() + self.assertTrue(stream) + + error = transcript.GetAsJSON(stream) + self.assertSuccess(error) + + transcript = json.loads(stream.GetData()) + + # The transcript will contain a bunch of commands that are run + # automatically. We only want to validate for the ones that are + # listed above, hence trimming to the last parts. + transcript = transcript[-total_number_of_commands:] ---------------- bulbazord wrote:
I think that's fine. Thanks for checking. https://github.com/llvm/llvm-project/pull/90703 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits