1import lldb 2from lldbsuite.test.lldbtest import * 3from lldbsuite.test.decorators import * 4from lldbsuite.test.gdbclientutils import * 5from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase 6 7 8class TestIOSSimulator(GDBRemoteTestBase): 9 10 """ 11 Test that an ios simulator process is recognized as such. 12 """ 13 14 class MyResponder(MockGDBServerResponder): 15 def __init__(self, host, process): 16 self.host_ostype = host 17 self.process_ostype = process 18 MockGDBServerResponder.__init__(self) 19 20 def respond(self, packet): 21 if packet == "qProcessInfo": 22 return self.qProcessInfo() 23 return MockGDBServerResponder.respond(self, packet) 24 25 def qHostInfo(self): 26 return ( 27 "cputype:16777223;cpusubtype:8;ostype:%s;vendor:apple;os_version:10.15.4;maccatalyst_version:13.4;endian:little;ptrsize:8;" 28 % self.host_ostype 29 ) 30 31 def qProcessInfo(self): 32 return ( 33 "pid:a860;parent-pid:d2a0;real-uid:1f5;real-gid:14;effective-uid:1f5;effective-gid:14;cputype:1000007;cpusubtype:8;ptrsize:8;ostype:%s;vendor:apple;endian:little;" 34 % self.process_ostype 35 ) 36 37 def vCont(self): 38 return "vCont;" 39 40 def platform_test(self, host, process, expected_triple): 41 self.server.responder = self.MyResponder(host, process) 42 if self.TraceOn(): 43 self.runCmd("log enable gdb-remote packets") 44 self.addTearDownHook(lambda: self.runCmd("log disable gdb-remote packets")) 45 46 target = self.dbg.CreateTargetWithFileAndArch(None, None) 47 process = self.connect(target) 48 triple = target.GetTriple() 49 self.assertEqual(triple, expected_triple) 50 51 @skipIfRemote 52 def test_macos(self): 53 self.platform_test( 54 host="macosx", process="macosx", expected_triple="x86_64h-apple-macosx-" 55 ) 56 57 @skipIfRemote 58 def test_ios_sim(self): 59 self.platform_test( 60 host="macosx", 61 process="iossimulator", 62 expected_triple="x86_64h-apple-ios-simulator", 63 ) 64 65 @skipIfRemote 66 def test_catalyst(self): 67 self.platform_test( 68 host="macosx", 69 process="maccatalyst", 70 expected_triple="x86_64h-apple-ios-macabi", 71 ) 72 73 @skipIfRemote 74 def test_tvos_sim(self): 75 self.platform_test( 76 host="macosx", 77 process="tvossimulator", 78 expected_triple="x86_64h-apple-tvos-simulator", 79 ) 80 81 @skipIfRemote 82 def test_watchos_sim(self): 83 self.platform_test( 84 host="macosx", 85 process="watchossimulator", 86 expected_triple="x86_64h-apple-watchos-simulator", 87 ) 88