Skip to content

Conversation

@JDevlieghere
Copy link
Member

No description provided.

@JDevlieghere JDevlieghere enabled auto-merge (squash) November 14, 2025 22:37
@llvmbot llvmbot added the lldb label Nov 14, 2025
@llvmbot
Copy link
Member

llvmbot commented Nov 14, 2025

@llvm/pr-subscribers-lldb

Author: Jonas Devlieghere (JDevlieghere)

Changes

Full diff: https://github.com/llvm/llvm-project/pull/168138.diff

1 Files Affected:

  • (added) lldb/test/API/python_api/command_script_output/TestCommandScriptOutput.py (+47)
diff --git a/lldb/test/API/python_api/command_script_output/TestCommandScriptOutput.py b/lldb/test/API/python_api/command_script_output/TestCommandScriptOutput.py
new file mode 100644
index 0000000000000..abe0eec1cb42c
--- /dev/null
+++ b/lldb/test/API/python_api/command_script_output/TestCommandScriptOutput.py
@@ -0,0 +1,47 @@
+"""
+Test that HandleCommand captures stdout and stderr from script commands.
+"""
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+
+
+class CommandScriptOutputTestCase(TestBase):
+    NO_DEBUG_INFO_TESTCASE = True
+
+    def test_script_command_stdout_stderr(self):
+        """Test that HandleCommand captures stdout and stderr from script commands."""
+        ci = self.dbg.GetCommandInterpreter()
+        self.assertTrue(ci, VALID_COMMAND_INTERPRETER)
+
+        res = lldb.SBCommandReturnObject()
+
+        # Execute a script command that writes to stdout.
+        ci.HandleCommand("script print('Hello stdout')", res)
+        self.assertTrue(res.Succeeded())
+        self.assertIn("Hello stdout", res.GetOutput())
+
+        # Execute a script command that writes to stderr.
+        ci.HandleCommand("script import sys; sys.stderr.write('Hello stderr\\n')", res)
+        self.assertTrue(res.Succeeded())
+        self.assertIn("Hello stderr", res.GetOutput())
+
+        # Execute a script command that writes to both stdout and stderr.
+        ci.HandleCommand(
+            "script import sys; print('Output line'); sys.stderr.write('Error line\\n')",
+            res,
+        )
+        self.assertTrue(res.Succeeded())
+        self.assertIn("Output line", res.GetOutput())
+        self.assertIn("Error line", res.GetOutput())
+
+        # Test that multiple print statements are captured.
+        ci.HandleCommand(
+            "script print('Line 1'); print('Line 2'); print('Line 3')", res
+        )
+        self.assertTrue(res.Succeeded())
+        output = res.GetOutput()
+        self.assertIn("Line 1", output)
+        self.assertIn("Line 2", output)
+        self.assertIn("Line 3", output)

@JDevlieghere JDevlieghere merged commit 6dad2c2 into llvm:main Nov 14, 2025
9 of 11 checks passed
@JDevlieghere JDevlieghere deleted the python-stdout-test branch November 14, 2025 23:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants