| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 
 | """
Test target commands: target.auto-install-main-executable.
"""
import socket
import time
import lldbgdbserverutils
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class TestAutoInstallMainExecutable(TestBase):
    NO_DEBUG_INFO_TESTCASE = True
    @skipIfRemote
    @skipIfWindows # This test is flaky on Windows
    def test_target_auto_install_main_executable(self):
        if lldbgdbserverutils.get_lldb_server_exe() is None:
          self.skipTest("lldb-server not found")
        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.spawnSubprocess(
            lldbgdbserverutils.get_lldb_server_exe(),
            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)
        connect_opts = lldb.SBPlatformConnectOptions(connect_url)
        self.assertSuccess(new_platform.ConnectRemote(connect_opts))
        wd = self.getBuildArtifact("wd")
        os.mkdir(wd)
        new_platform.SetWorkingDirectory(wd)
        # Manually install the modified binary.
        src_device = lldb.SBFileSpec(self.getBuildArtifact("a.device.out"))
        dest = lldb.SBFileSpec(os.path.join(wd, "a.out"))
        self.assertSuccess(new_platform.Put(src_device, dest))
        # Test the default setting.
        self.expect("settings show target.auto-install-main-executable",
                substrs=["target.auto-install-main-executable (boolean) = true"],
                msg="Default settings for target.auto-install-main-executable failed.")
        # Disable the auto install.
        self.runCmd("settings set target.auto-install-main-executable false")
        self.expect("settings show target.auto-install-main-executable",
            substrs=["target.auto-install-main-executable (boolean) = false"])
        # Create the target with the original file.
        self.runCmd("target create --remote-file %s %s "%
                                        (dest.fullpath,
                                            self.getBuildArtifact("a.out")))
        self.expect("process launch", substrs=["exited with status = 74"])
 |