llvm-project/lldb/test/API/tools/lldb-server/TestGdbRemoteCompletion.py
Pavel Labath 872b1da6ad [lldb/test] s/add_no_ack_remote_stream/do_handshake
These two functions are doing the same thing, only one of them is
sending the packets immediately and the other "queues" them to be sent
later. The first one is better as in case of errors, the backtrace will
point straight to the place that caused them.

Modify the first method to avoid duplication, and ten standardize on it.
2021-04-13 17:10:32 +02:00

64 lines
2.2 KiB
Python

import tempfile
import gdbremote_testcase
from lldbsuite.test.lldbtest import *
from lldbsuite.test.decorators import *
from lldbgdbserverutils import *
class GdbRemoteCompletionTestCase(gdbremote_testcase.GdbRemoteTestCaseBase):
mydir = TestBase.compute_mydir(__file__)
def init_lldb_server(self):
self.debug_monitor_exe = get_lldb_server_exe()
if not self.debug_monitor_exe:
self.skipTest("lldb-server exe not found")
port_file = tempfile.NamedTemporaryFile().name
commandline_args = [
"platform",
"--listen",
"*:0",
"--socket-file",
port_file
]
server = self.spawnSubprocess(
get_lldb_server_exe(),
commandline_args,
install_remote=False)
self.assertIsNotNone(server)
self.stub_hostname = "localhost"
self.port = int(lldbutil.wait_for_file_on_target(self, port_file))
self.sock = self.create_socket()
self._server = Server(self.sock, server)
self.do_handshake()
def generate_hex_path(self, target):
return str(os.path.join(self.getBuildDir(), target)).encode().hex()
@add_test_categories(["llgs"])
def test_autocomplete_path(self):
self.build()
self.init_lldb_server()
# Test file-included completion when flag is set to 0.
self.test_sequence.add_log_lines(
["read packet: $qPathComplete:0,{}#00".format(
self.generate_hex_path("main")),
"send packet: $M{},{}#00".format(
self.generate_hex_path("main.d"),
self.generate_hex_path("main.o"))
],
True)
# Test directory-only completion when flag is set to 1.
os.makedirs(os.path.join(self.getBuildDir(), "test"))
self.test_sequence.add_log_lines(
["read packet: $qPathComplete:1,{}#00".format(
self.generate_hex_path("tes")),
"send packet: $M{}{}#00".format(
self.generate_hex_path("test"),
os.path.sep.encode().hex()) # "test/" or "test\".
],
True)
self.expect_gdbremote_sequence()