mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-01 09:41:08 +00:00
[lldb/test] Move and improve TestPlatformProcessConnect.py
Although it is located under tools/lldb-server, this test is very different that other lldb-server tests. The most important distinction is that it does not test lldb-server directly, but rather interacts with it through the lldb client. It also tests the relevant client functionality (the platform connect command, which is even admitted in the test name). The fact that this test is structured as a lldb-server test means it cannot access most of the goodies available to the "normal" lldb tests (the runCmd function, which it reimplements; the run_break_set_by_symbol utility function; etc.). This patch makes it a full-fledged lldb this, and rewrites the relevant bits to make use of the standard features. I also move the test into the "commands" subtree to better reflect its new status.
This commit is contained in:
parent
4692bb4a8a
commit
d77b04e4ed
@ -5,14 +5,16 @@ from lldbsuite.test.decorators import *
|
||||
from lldbsuite.test.lldbtest import *
|
||||
from lldbsuite.test import lldbutil
|
||||
|
||||
class TestPlatformProcessConnect(gdbremote_testcase.GdbRemoteTestCaseBase):
|
||||
class TestPlatformProcessConnect(TestBase):
|
||||
mydir = TestBase.compute_mydir(__file__)
|
||||
NO_DEBUG_INFO_TESTCASE = True
|
||||
|
||||
@skipIfRemote
|
||||
@expectedFailureAll(hostoslist=["windows"], triple='.*-android')
|
||||
@skipIfWindows # lldb-server does not terminate correctly
|
||||
@skipIfDarwin # lldb-server not found correctly
|
||||
@skipIf(oslist=["linux"], archs=["arm", "aarch64"]) # Fails randomly
|
||||
@add_test_categories(["lldb-server"])
|
||||
def test_platform_process_connect(self):
|
||||
self.build()
|
||||
|
||||
@ -35,28 +37,18 @@ class TestPlatformProcessConnect(gdbremote_testcase.GdbRemoteTestCaseBase):
|
||||
|
||||
socket_id = lldbutil.wait_for_file_on_target(self, port_file)
|
||||
|
||||
self.dbg.SetAsync(False)
|
||||
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)
|
||||
|
||||
command = "platform connect %s" % (connect_url)
|
||||
result = lldb.SBCommandReturnObject()
|
||||
self.dbg.GetCommandInterpreter().HandleCommand(command, result)
|
||||
self.assertTrue(
|
||||
result.Succeeded(),
|
||||
"platform process connect failed: %s" %
|
||||
result.GetError())
|
||||
lldbutil.run_break_set_by_symbol(self, "main")
|
||||
process = self.process()
|
||||
|
||||
target = self.dbg.GetSelectedTarget()
|
||||
process = target.GetProcess()
|
||||
thread = process.GetThreadAtIndex(0)
|
||||
|
||||
breakpoint = target.BreakpointCreateByName("main")
|
||||
process.Continue()
|
||||
|
||||
frame = thread.GetFrameAtIndex(0)
|
||||
frame = self.frame()
|
||||
self.assertEqual(frame.GetFunction().GetName(), "main")
|
||||
self.assertEqual(frame.FindVariable("argc").GetValueAsSigned(), 2)
|
||||
process.Continue()
|
Loading…
Reference in New Issue
Block a user