13cd8d7b1SGongyu Dengimport tempfile 23cd8d7b1SGongyu Dengimport gdbremote_testcase 33cd8d7b1SGongyu Dengfrom lldbsuite.test.lldbtest import * 43cd8d7b1SGongyu Dengfrom lldbsuite.test.decorators import * 53cd8d7b1SGongyu Dengfrom lldbgdbserverutils import * 63cd8d7b1SGongyu Deng 73cd8d7b1SGongyu Deng 82238dcc3SJonas Devlieghereclass GdbRemoteCompletionTestCase(gdbremote_testcase.GdbRemoteTestCaseBase): 93cd8d7b1SGongyu Deng def init_lldb_server(self): 103cd8d7b1SGongyu Deng self.debug_monitor_exe = get_lldb_server_exe() 113cd8d7b1SGongyu Deng if not self.debug_monitor_exe: 123cd8d7b1SGongyu Deng self.skipTest("lldb-server exe not found") 133cd8d7b1SGongyu Deng port_file = tempfile.NamedTemporaryFile().name 142238dcc3SJonas Devlieghere commandline_args = ["platform", "--listen", "*:0", "--socket-file", port_file] 153cd8d7b1SGongyu Deng server = self.spawnSubprocess( 162238dcc3SJonas Devlieghere get_lldb_server_exe(), commandline_args, install_remote=False 172238dcc3SJonas Devlieghere ) 183cd8d7b1SGongyu Deng self.assertIsNotNone(server) 193cd8d7b1SGongyu Deng self.stub_hostname = "localhost" 203cd8d7b1SGongyu Deng self.port = int(lldbutil.wait_for_file_on_target(self, port_file)) 213cd8d7b1SGongyu Deng self.sock = self.create_socket() 22a2f4f7daSPavel Labath self._server = Server(self.sock, server) 233cd8d7b1SGongyu Deng 24872b1da6SPavel Labath self.do_handshake() 253cd8d7b1SGongyu Deng 263cd8d7b1SGongyu Deng def generate_hex_path(self, target): 273cd8d7b1SGongyu Deng return str(os.path.join(self.getBuildDir(), target)).encode().hex() 283cd8d7b1SGongyu Deng 29*34f33babSDmitry Vasilyev @skipIfRemote 3076a718eeSPavel Labath @add_test_categories(["llgs"]) 313cd8d7b1SGongyu Deng def test_autocomplete_path(self): 323cd8d7b1SGongyu Deng self.build() 333cd8d7b1SGongyu Deng self.init_lldb_server() 343cd8d7b1SGongyu Deng 353cd8d7b1SGongyu Deng # Test file-included completion when flag is set to 0. 363cd8d7b1SGongyu Deng self.test_sequence.add_log_lines( 372238dcc3SJonas Devlieghere [ 382238dcc3SJonas Devlieghere "read packet: $qPathComplete:0,{}#00".format( 392238dcc3SJonas Devlieghere self.generate_hex_path("main") 402238dcc3SJonas Devlieghere ), 413cd8d7b1SGongyu Deng "send packet: $M{},{}#00".format( 422238dcc3SJonas Devlieghere self.generate_hex_path("main.d"), self.generate_hex_path("main.o") 432238dcc3SJonas Devlieghere ), 443cd8d7b1SGongyu Deng ], 452238dcc3SJonas Devlieghere True, 462238dcc3SJonas Devlieghere ) 473cd8d7b1SGongyu Deng 483cd8d7b1SGongyu Deng # Test directory-only completion when flag is set to 1. 493cd8d7b1SGongyu Deng os.makedirs(os.path.join(self.getBuildDir(), "test")) 503cd8d7b1SGongyu Deng self.test_sequence.add_log_lines( 512238dcc3SJonas Devlieghere [ 522238dcc3SJonas Devlieghere "read packet: $qPathComplete:1,{}#00".format( 532238dcc3SJonas Devlieghere self.generate_hex_path("tes") 542238dcc3SJonas Devlieghere ), 553cd8d7b1SGongyu Deng "send packet: $M{}{}#00".format( 562238dcc3SJonas Devlieghere self.generate_hex_path("test"), os.path.sep.encode().hex() 572238dcc3SJonas Devlieghere ), # "test/" or "test\". 583cd8d7b1SGongyu Deng ], 592238dcc3SJonas Devlieghere True, 602238dcc3SJonas Devlieghere ) 613cd8d7b1SGongyu Deng 623cd8d7b1SGongyu Deng self.expect_gdbremote_sequence() 63