This reverts commita86f4ee774and the fixup in587206a442because brakage on macos (TestAutoInstallMainExecutable.py).
61 lines
2.1 KiB
Python
61 lines
2.1 KiB
Python
""" Check that errors while handling qLaunchGDBServer are reported to the user.
|
|
Though this isn't a platform command in itself, the best way to test it is
|
|
from Python because we can juggle multiple processes more easily.
|
|
"""
|
|
|
|
import os
|
|
import socket
|
|
import shutil
|
|
import lldbgdbserverutils
|
|
from lldbsuite.test.decorators import *
|
|
from lldbsuite.test.lldbtest import *
|
|
from lldbsuite.test import lldbutil
|
|
|
|
|
|
class TestPlatformProcessLaunchGDBServer(TestBase):
|
|
NO_DEBUG_INFO_TESTCASE = True
|
|
|
|
@skipIfRemote
|
|
# Windows cannot delete the executable while it is running.
|
|
# On Darwin we may be using debugserver.
|
|
@skipUnlessPlatform(["linux"])
|
|
@add_test_categories(["lldb-server"])
|
|
def test_platform_process_launch_gdb_server(self):
|
|
self.build()
|
|
|
|
hostname = socket.getaddrinfo("localhost", 0, proto=socket.IPPROTO_TCP)[0][4][0]
|
|
listen_url = "[%s]:0" % hostname
|
|
|
|
port_file = self.getBuildArtifact("port")
|
|
commandline_args = [
|
|
"platform",
|
|
"--listen",
|
|
listen_url,
|
|
"--socket-file",
|
|
port_file,
|
|
"--",
|
|
self.getBuildArtifact("a.out"),
|
|
"foo",
|
|
]
|
|
|
|
# Run lldb-server from a new location.
|
|
new_lldb_server = self.getBuildArtifact("lldb-server")
|
|
shutil.copy(lldbgdbserverutils.get_lldb_server_exe(), new_lldb_server)
|
|
|
|
self.spawnSubprocess(new_lldb_server, commandline_args)
|
|
socket_id = lldbutil.wait_for_file_on_target(self, port_file)
|
|
|
|
new_platform = lldb.SBPlatform("remote-" + self.getPlatform())
|
|
self.dbg.SetSelectedPlatform(new_platform)
|
|
|
|
connect_url = "connect://[%s]:%s" % (hostname, socket_id)
|
|
self.runCmd("platform connect %s" % connect_url)
|
|
|
|
# First connect to lldb-server which spawn a process to handle the connection.
|
|
# Then remove our new lldb-server so that when it tries to invoke itself as a
|
|
# gdbserver, it fails.
|
|
os.remove(new_lldb_server)
|
|
|
|
self.runCmd("target create {}".format(self.getBuildArtifact("a.out")))
|
|
self.expect("run", substrs=["unable to launch a GDB server on"], error=True)
|