-
Notifications
You must be signed in to change notification settings - Fork 13.6k
[lldb] Fixed the test TestGdbRemoteLaunch #91931
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[lldb] Fixed the test TestGdbRemoteLaunch #91931
Conversation
@llvm/pr-subscribers-lldb Author: Dmitry Vasilyev (slydiman) ChangesInstall Full diff: https://github.com/llvm/llvm-project/pull/91931.diff 1 Files Affected:
diff --git a/lldb/test/API/tools/lldb-server/TestGdbRemoteLaunch.py b/lldb/test/API/tools/lldb-server/TestGdbRemoteLaunch.py
index 78a4d326c12d1..530f5aa57ea48 100644
--- a/lldb/test/API/tools/lldb-server/TestGdbRemoteLaunch.py
+++ b/lldb/test/API/tools/lldb-server/TestGdbRemoteLaunch.py
@@ -8,17 +8,32 @@
class GdbRemoteLaunchTestCase(gdbremote_testcase.GdbRemoteTestCaseBase):
+ def get_exe_path(self):
+ exe_path = self.getBuildArtifact("a.out")
+ if lldb.remote_platform:
+ remote_path = lldbutil.append_to_process_working_directory(self, "a.out")
+ err = lldb.remote_platform.Install(
+ lldb.SBFileSpec(exe_path, True), lldb.SBFileSpec(remote_path, False)
+ )
+ if err.Fail():
+ raise Exception(
+ "remote_platform.Install('%s', '%s') failed: %s"
+ % (exe_path, remote_path, err)
+ )
+ exe_path = remote_path
+ return exe_path
+
@skipIfWindows # No pty support to test any inferior output
@add_test_categories(["llgs"])
def test_launch_via_A(self):
self.build()
- exe_path = self.getBuildArtifact("a.out")
- args = [exe_path, "stderr:arg1", "stderr:arg2", "stderr:arg3"]
- hex_args = [seven.hexlify(x) for x in args]
-
server = self.connect_to_debug_monitor()
self.assertIsNotNone(server)
self.do_handshake()
+ exe_path = self.get_exe_path()
+ args = [exe_path, "stderr:arg1", "stderr:arg2", "stderr:arg3"]
+ hex_args = [seven.hexlify(x) for x in args]
+
# NB: strictly speaking we should use %x here but this packet
# is deprecated, so no point in changing lldb-server's expectations
self.test_sequence.add_log_lines(
@@ -38,13 +53,13 @@ def test_launch_via_A(self):
@add_test_categories(["llgs"])
def test_launch_via_vRun(self):
self.build()
- exe_path = self.getBuildArtifact("a.out")
- args = [exe_path, "stderr:arg1", "stderr:arg2", "stderr:arg3"]
- hex_args = [seven.hexlify(x) for x in args]
-
server = self.connect_to_debug_monitor()
self.assertIsNotNone(server)
self.do_handshake()
+ exe_path = self.get_exe_path()
+ args = [exe_path, "stderr:arg1", "stderr:arg2", "stderr:arg3"]
+ hex_args = [seven.hexlify(x) for x in args]
+
self.test_sequence.add_log_lines(
[
"read packet: $vRun;%s;%s;%s;%s#00" % tuple(hex_args),
@@ -60,12 +75,12 @@ def test_launch_via_vRun(self):
@add_test_categories(["llgs"])
def test_launch_via_vRun_no_args(self):
self.build()
- exe_path = self.getBuildArtifact("a.out")
- hex_path = seven.hexlify(exe_path)
-
server = self.connect_to_debug_monitor()
self.assertIsNotNone(server)
self.do_handshake()
+ exe_path = self.get_exe_path()
+ hex_path = seven.hexlify(exe_path)
+
self.test_sequence.add_log_lines(
[
"read packet: $vRun;%s#00" % (hex_path,),
@@ -78,6 +93,7 @@ def test_launch_via_vRun_no_args(self):
self.expect_gdbremote_sequence()
@add_test_categories(["llgs"])
+ @skipIfRemote
def test_launch_failure_via_vRun(self):
self.build()
exe_path = self.getBuildArtifact("a.out")
@@ -110,14 +126,13 @@ def test_launch_failure_via_vRun(self):
@add_test_categories(["llgs"])
def test_QEnvironment(self):
self.build()
- exe_path = self.getBuildArtifact("a.out")
- env = {"FOO": "test", "BAR": "a=z"}
- args = [exe_path, "print-env:FOO", "print-env:BAR"]
- hex_args = [seven.hexlify(x) for x in args]
-
server = self.connect_to_debug_monitor()
self.assertIsNotNone(server)
self.do_handshake()
+ exe_path = self.get_exe_path()
+ env = {"FOO": "test", "BAR": "a=z"}
+ args = [exe_path, "print-env:FOO", "print-env:BAR"]
+ hex_args = [seven.hexlify(x) for x in args]
for key, value in env.items():
self.test_sequence.add_log_lines(
@@ -143,14 +158,13 @@ def test_QEnvironment(self):
@add_test_categories(["llgs"])
def test_QEnvironmentHexEncoded(self):
self.build()
- exe_path = self.getBuildArtifact("a.out")
- env = {"FOO": "test", "BAR": "a=z", "BAZ": "a*}#z"}
- args = [exe_path, "print-env:FOO", "print-env:BAR", "print-env:BAZ"]
- hex_args = [seven.hexlify(x) for x in args]
-
server = self.connect_to_debug_monitor()
self.assertIsNotNone(server)
self.do_handshake()
+ exe_path = self.get_exe_path()
+ env = {"FOO": "test", "BAR": "a=z", "BAZ": "a*}#z"}
+ args = [exe_path, "print-env:FOO", "print-env:BAR", "print-env:BAZ"]
+ hex_args = [seven.hexlify(x) for x in args]
for key, value in env.items():
hex_enc = seven.hexlify("%s=%s" % (key, value))
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Surprised we haven't needed this before, but I didn't see any existing function for it.
It can be used in tests llvm#91918, llvm#91931 and such.
@DavidSpickett Please look at #91944. |
Install `a.out` to the remote target (after handshake) if necessary and use the remote path to call vRun.
cbc183b
to
361cd68
Compare
Install
a.out
to the remote target (after handshake) if necessary and use the remote path to callvRun
.