https://github.com/da-viper updated https://github.com/llvm/llvm-project/pull/179974
>From 03a21c6b9eb9c2b086b6b534d2340f5bdd5d61d8 Mon Sep 17 00:00:00 2001 From: Ebuka Ezike <[email protected]> Date: Thu, 5 Feb 2026 16:25:42 +0000 Subject: [PATCH 1/2] [lldb-dap] Split the launch IO redirection tests. Tests in the same python file share the same build directory. although they are the same binary. The logs are different. --- ...{TestDAP_launch_io.py => DAP_launch_io.py} | 158 ------------------ .../TestDAP_launch_io_integratedTerminal.py | 119 +++++++++++++ .../io/TestDAP_launch_io_internalConsole.py | 50 ++++++ 3 files changed, 169 insertions(+), 158 deletions(-) rename lldb/test/API/tools/lldb-dap/launch/io/{TestDAP_launch_io.py => DAP_launch_io.py} (63%) create mode 100644 lldb/test/API/tools/lldb-dap/launch/io/TestDAP_launch_io_integratedTerminal.py create mode 100644 lldb/test/API/tools/lldb-dap/launch/io/TestDAP_launch_io_internalConsole.py diff --git a/lldb/test/API/tools/lldb-dap/launch/io/TestDAP_launch_io.py b/lldb/test/API/tools/lldb-dap/launch/io/DAP_launch_io.py similarity index 63% rename from lldb/test/API/tools/lldb-dap/launch/io/TestDAP_launch_io.py rename to lldb/test/API/tools/lldb-dap/launch/io/DAP_launch_io.py index f6cc1589cb71c..f5253f6ba7935 100644 --- a/lldb/test/API/tools/lldb-dap/launch/io/TestDAP_launch_io.py +++ b/lldb/test/API/tools/lldb-dap/launch/io/DAP_launch_io.py @@ -11,18 +11,9 @@ """ from abc import abstractmethod -from typing import IO import lldbdap_testcase from tempfile import NamedTemporaryFile -from lldbsuite.test.decorators import ( - skip, - skipIfAsan, - skipIfBuildType, - skipIfRemote, - skipIfWindows, -) - class DAP_launchIO(lldbdap_testcase.DAPTestCaseBase): """The class holds the implementation different ways to redirect the debuggee I/O streams @@ -210,152 +201,3 @@ def _get_debuggee_stderr(self) -> str: It requires subclasses to implement the specific mechanism for obtaining the stderr stream. """ raise RuntimeError(f"NotImplemented for {self}") - - -@skipIfWindows -class TestDAP_launchInternalConsole(DAP_launchIO): - console = "internalConsole" - __debuggee_stdout = None - - # all redirection - def test_all_redirection(self): - self.all_redirection(console=self.console) - - def test_all_redirection_with_args(self): - self.all_redirection(console=self.console, with_args=True) - - # stdin - def test_stdin_redirection(self): - self.stdin_redirection(console=self.console) - - def test_stdin_redirection_with_args(self): - self.stdin_redirection(console=self.console, with_args=True) - - # stdout - def test_stdout_redirection(self): - self.stdout_redirection(console=self.console) - - def test_stdout_redirection_with_env(self): - self.stdout_redirection(console=self.console, with_env=True) - - # stderr - def test_stderr_redirection(self): - self.stderr_redirection(console=self.console) - - def test_stderr_redirection_with_env(self): - self.stderr_redirection(console=self.console, with_env=True) - - def _get_debuggee_stdout(self) -> str: - # self.get_stdout is not idempotent. - if self.__debuggee_stdout is None: - self.__debuggee_stdout = self.get_stdout() - return self.__debuggee_stdout - - def _get_debuggee_stderr(self) -> str: - # NOTE: In internalConsole stderr writes to stdout. - return self._get_debuggee_stdout() - - -@skipIfRemote -@skipIfAsan -@skipIfBuildType(["debug"]) -@skipIfWindows -class TestDAP_launchIntegratedTerminal(DAP_launchIO): - console = "integratedTerminal" - - # all redirection - def test_all_redirection(self): - self.all_redirection(console=self.console) - - def test_all_redirection_with_args(self): - self.all_redirection(console=self.console, with_args=True) - - # stdin - def test_stdin_redirection(self): - self.stdin_redirection(console=self.console) - - def test_stdin_redirection_with_args(self): - self.stdin_redirection(console=self.console, with_args=True) - - # stdout - def test_stdout_redirection(self): - self.stdout_redirection(console=self.console) - - def test_stdout_redirection_with_env(self): - self.stdout_redirection(console=self.console, with_env=True) - - # stderr - def test_stderr_redirection(self): - self.stderr_redirection(console=self.console) - - def test_stderr_redirection_with_env(self): - self.stderr_redirection(console=self.console, with_env=True) - - def _get_debuggee_stdout(self) -> str: - self.assertIsNotNone( - self.dap_server.reverse_process, "Expected a debuggee process." - ) - proc_stdout: IO = self.dap_server.reverse_process.stdout - self.assertIsNotNone(proc_stdout) - return proc_stdout.read().decode() - - def _get_debuggee_stderr(self) -> str: - self.assertIsNotNone( - self.dap_server.reverse_process, "Expected a debuggee process." - ) - proc_stderr = self.dap_server.reverse_process.stderr - self.assertIsNotNone(proc_stderr) - return proc_stderr.read().decode() - - -@skip # NOTE: Currently there is no difference between internal and externalTerminal. -@skipIfRemote -@skipIfAsan -@skipIfBuildType(["debug"]) -@skipIfWindows -class TestDAP_launchExternalTerminal(DAP_launchIO): - console = "externalTerminal" - - # all redirection - def test_all_redirection(self): - self.all_redirection(console=self.console) - - def test_all_redirection_with_args(self): - self.all_redirection(console=self.console, with_args=True) - - # stdin - def test_stdin_redirection(self): - self.stdin_redirection(console=self.console) - - def test_stdin_redirection_with_args(self): - self.stdin_redirection(console=self.console, with_args=True) - - # stdout - def test_stdout_redirection(self): - self.stdout_redirection(console=self.console) - - def test_stdout_redirection_with_env(self): - self.stdout_redirection(console=self.console, with_env=True) - - # stderr - def test_stderr_redirection(self): - self.stderr_redirection(console=self.console) - - def test_stderr_redirection_with_env(self): - self.stderr_redirection(console=self.console, with_env=True) - - def _get_debuggee_stdout(self) -> str: - self.assertIsNotNone( - self.dap_server.reverse_process, "Expected a debuggee process." - ) - proc_stdout: IO = self.dap_server.reverse_process.stdout - self.assertIsNotNone(proc_stdout) - return proc_stdout.read().decode() - - def _get_debuggee_stderr(self) -> str: - self.assertIsNotNone( - self.dap_server.reverse_process, "Expected a debuggee process." - ) - proc_stderr = self.dap_server.reverse_process.stderr - self.assertIsNotNone(proc_stderr) - return proc_stderr.read().decode() diff --git a/lldb/test/API/tools/lldb-dap/launch/io/TestDAP_launch_io_integratedTerminal.py b/lldb/test/API/tools/lldb-dap/launch/io/TestDAP_launch_io_integratedTerminal.py new file mode 100644 index 0000000000000..989f96ec747cc --- /dev/null +++ b/lldb/test/API/tools/lldb-dap/launch/io/TestDAP_launch_io_integratedTerminal.py @@ -0,0 +1,119 @@ +""" +Test the redirection after launching in the integrated terminal. +""" + +from typing import IO +from lldbsuite.test.decorators import ( + skip, + skipIfAsan, + skipIfBuildType, + skipIfRemote, + skipIfWindows, +) + +from DAP_launch_io import DAP_launchIO + + +@skipIfRemote +@skipIfAsan +@skipIfBuildType(["debug"]) +@skipIfWindows +class TestDAP_launchIntegratedTerminal(DAP_launchIO): + console = "integratedTerminal" + + # all redirection + def test_all_redirection(self): + self.all_redirection(console=self.console) + + def test_all_redirection_with_args(self): + self.all_redirection(console=self.console, with_args=True) + + # stdin + def test_stdin_redirection(self): + self.stdin_redirection(console=self.console) + + def test_stdin_redirection_with_args(self): + self.stdin_redirection(console=self.console, with_args=True) + + # stdout + def test_stdout_redirection(self): + self.stdout_redirection(console=self.console) + + def test_stdout_redirection_with_env(self): + self.stdout_redirection(console=self.console, with_env=True) + + # stderr + def test_stderr_redirection(self): + self.stderr_redirection(console=self.console) + + def test_stderr_redirection_with_env(self): + self.stderr_redirection(console=self.console, with_env=True) + + def _get_debuggee_stdout(self) -> str: + self.assertIsNotNone( + self.dap_server.reverse_process, "Expected a debuggee process." + ) + proc_stdout: IO = self.dap_server.reverse_process.stdout + self.assertIsNotNone(proc_stdout) + return proc_stdout.read().decode() + + def _get_debuggee_stderr(self) -> str: + self.assertIsNotNone( + self.dap_server.reverse_process, "Expected a debuggee process." + ) + proc_stderr = self.dap_server.reverse_process.stderr + self.assertIsNotNone(proc_stderr) + return proc_stderr.read().decode() + + +@skip # NOTE: Currently there is no difference between internal and externalTerminal. +@skipIfRemote +@skipIfAsan +@skipIfBuildType(["debug"]) +@skipIfWindows +class TestDAP_launchExternalTerminal(DAP_launchIO): + console = "externalTerminal" + + # all redirection + def test_all_redirection(self): + self.all_redirection(console=self.console) + + def test_all_redirection_with_args(self): + self.all_redirection(console=self.console, with_args=True) + + # stdin + def test_stdin_redirection(self): + self.stdin_redirection(console=self.console) + + def test_stdin_redirection_with_args(self): + self.stdin_redirection(console=self.console, with_args=True) + + # stdout + def test_stdout_redirection(self): + self.stdout_redirection(console=self.console) + + def test_stdout_redirection_with_env(self): + self.stdout_redirection(console=self.console, with_env=True) + + # stderr + def test_stderr_redirection(self): + self.stderr_redirection(console=self.console) + + def test_stderr_redirection_with_env(self): + self.stderr_redirection(console=self.console, with_env=True) + + def _get_debuggee_stdout(self) -> str: + self.assertIsNotNone( + self.dap_server.reverse_process, "Expected a debuggee process." + ) + proc_stdout: IO = self.dap_server.reverse_process.stdout + self.assertIsNotNone(proc_stdout) + return proc_stdout.read().decode() + + def _get_debuggee_stderr(self) -> str: + self.assertIsNotNone( + self.dap_server.reverse_process, "Expected a debuggee process." + ) + proc_stderr = self.dap_server.reverse_process.stderr + self.assertIsNotNone(proc_stderr) + return proc_stderr.read().decode() diff --git a/lldb/test/API/tools/lldb-dap/launch/io/TestDAP_launch_io_internalConsole.py b/lldb/test/API/tools/lldb-dap/launch/io/TestDAP_launch_io_internalConsole.py new file mode 100644 index 0000000000000..2fd2592b63f7f --- /dev/null +++ b/lldb/test/API/tools/lldb-dap/launch/io/TestDAP_launch_io_internalConsole.py @@ -0,0 +1,50 @@ +""" +Test the redirection after launching in the integrated terminal. +""" + +from lldbsuite.test.decorators import skipIfWindows +from DAP_launch_io import DAP_launchIO + + +@skipIfWindows +class TestDAP_launchInternalConsole(DAP_launchIO): + console = "internalConsole" + __debuggee_stdout = None + + # all redirection + def test_all_redirection(self): + self.all_redirection(console=self.console) + + def test_all_redirection_with_args(self): + self.all_redirection(console=self.console, with_args=True) + + # stdin + def test_stdin_redirection(self): + self.stdin_redirection(console=self.console) + + def test_stdin_redirection_with_args(self): + self.stdin_redirection(console=self.console, with_args=True) + + # stdout + def test_stdout_redirection(self): + self.stdout_redirection(console=self.console) + + def test_stdout_redirection_with_env(self): + self.stdout_redirection(console=self.console, with_env=True) + + # stderr + def test_stderr_redirection(self): + self.stderr_redirection(console=self.console) + + def test_stderr_redirection_with_env(self): + self.stderr_redirection(console=self.console, with_env=True) + + def _get_debuggee_stdout(self) -> str: + # self.get_stdout is not idempotent. + if self.__debuggee_stdout is None: + self.__debuggee_stdout = self.get_stdout() + return self.__debuggee_stdout + + def _get_debuggee_stderr(self) -> str: + # NOTE: In internalConsole stderr writes to stdout. + return self._get_debuggee_stdout() >From ec1a117257095a32d13ad0b2f515b95bf330e1a3 Mon Sep 17 00:00:00 2001 From: Ebuka Ezike <[email protected]> Date: Thu, 5 Feb 2026 18:04:42 +0000 Subject: [PATCH 2/2] fix typo --- .../lldb-dap/launch/io/TestDAP_launch_io_internalConsole.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lldb/test/API/tools/lldb-dap/launch/io/TestDAP_launch_io_internalConsole.py b/lldb/test/API/tools/lldb-dap/launch/io/TestDAP_launch_io_internalConsole.py index 2fd2592b63f7f..b62d994758163 100644 --- a/lldb/test/API/tools/lldb-dap/launch/io/TestDAP_launch_io_internalConsole.py +++ b/lldb/test/API/tools/lldb-dap/launch/io/TestDAP_launch_io_internalConsole.py @@ -1,5 +1,5 @@ """ -Test the redirection after launching in the integrated terminal. +Test the redirection after launching in the internal console. """ from lldbsuite.test.decorators import skipIfWindows _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
