| 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() |