1d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen""" 2b1821b4d25d9c31437b8e97b9feccd1141b9388bJohnny ChenTest lldb Python API object's default constructor and make sure it is invalid 3d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chenafter initial construction. 4d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 5287e28b6dfc4f71113fe753223f165128acd4ff5Johnny ChenThere are also some cases of boundary condition testings sprinkled throughout 6287e28b6dfc4f71113fe753223f165128acd4ff5Johnny Chenthe tests where None is passed to SB API which expects (const char *) in the 7287e28b6dfc4f71113fe753223f165128acd4ff5Johnny ChenC++ API counterpart. Passing None should not crash lldb! 8287e28b6dfc4f71113fe753223f165128acd4ff5Johnny Chen 915be1d0710fbbd52465e6981a484a6439afe4093Johnny ChenThere are three exceptions to the above general rules, though; API objects 1015be1d0710fbbd52465e6981a484a6439afe4093Johnny ChenSBCommadnReturnObject, SBStream, and SBSymbolContextList, are all valid objects 1115be1d0710fbbd52465e6981a484a6439afe4093Johnny Chenafter default construction. 12d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen""" 13d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 14d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chenimport os, time 15d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chenimport re 16d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chenimport unittest2 17d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chenimport lldb, lldbutil 18d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chenfrom lldbtest import * 19d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 20d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chenclass APIDefaultConstructorTestCase(TestBase): 21d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 22d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen mydir = os.path.join("python_api", "default-constructor") 23d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 24d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 25d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBAddress(self): 26d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBAddress() 27d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 28d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 29d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 301581e74f6217967228294b8079b6e2f908213d6dJohnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 311581e74f6217967228294b8079b6e2f908213d6dJohnny Chen import sb_address 321581e74f6217967228294b8079b6e2f908213d6dJohnny Chen sb_address.fuzz_obj(obj) 33d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 34d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 35d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBBlock(self): 36d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBBlock() 37d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 38d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 39d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 4007dd55a61f1cf76834df5f7e575af4686ab4bcacJohnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 4107dd55a61f1cf76834df5f7e575af4686ab4bcacJohnny Chen import sb_block 4207dd55a61f1cf76834df5f7e575af4686ab4bcacJohnny Chen sb_block.fuzz_obj(obj) 43d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 44d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 45d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBBreakpoint(self): 46d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBBreakpoint() 47d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 48d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 49d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 5015be1d0710fbbd52465e6981a484a6439afe4093Johnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 5115be1d0710fbbd52465e6981a484a6439afe4093Johnny Chen import sb_breakpoint 5215be1d0710fbbd52465e6981a484a6439afe4093Johnny Chen sb_breakpoint.fuzz_obj(obj) 53d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 54d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 55d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBBreakpointLocation(self): 56d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBBreakpointLocation() 57d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 58d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 59d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 60cd6377ee248eb5c7f0888b92bcbf52b79b6cea79Johnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 61cd6377ee248eb5c7f0888b92bcbf52b79b6cea79Johnny Chen import sb_breakpointlocation 62cd6377ee248eb5c7f0888b92bcbf52b79b6cea79Johnny Chen sb_breakpointlocation.fuzz_obj(obj) 63d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 64d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 65d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBBroadcaster(self): 66d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBBroadcaster() 67d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 68d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 69d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 7016c8872b2710c60b8b3798e618472952046be0b1Johnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 7116c8872b2710c60b8b3798e618472952046be0b1Johnny Chen import sb_broadcaster 7216c8872b2710c60b8b3798e618472952046be0b1Johnny Chen sb_broadcaster.fuzz_obj(obj) 73d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 74d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 75d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBCommandReturnObject(self): 76d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen """SBCommandReturnObject object is valid after default construction.""" 77d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBCommandReturnObject() 78d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 79d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 80d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertTrue(obj) 81d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 82d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 83d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBCommunication(self): 84d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBCommunication() 85d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 86d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 87d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 88fa3263b9838cc113c31ac116dca250847aefeffeJohnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 89fa3263b9838cc113c31ac116dca250847aefeffeJohnny Chen import sb_communication 90fa3263b9838cc113c31ac116dca250847aefeffeJohnny Chen sb_communication.fuzz_obj(obj) 91d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 92d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 93d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBCompileUnit(self): 94d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBCompileUnit() 95d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 96d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 97d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 98165e54925078a564f524c8d795bbf3a17341777fJohnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 99165e54925078a564f524c8d795bbf3a17341777fJohnny Chen import sb_compileunit 100165e54925078a564f524c8d795bbf3a17341777fJohnny Chen sb_compileunit.fuzz_obj(obj) 101d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 102d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 103d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBDebugger(self): 104d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBDebugger() 105d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 106d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 107d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 10843fc089c932931492c73d2a02cea65958d498deeJohnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 10943fc089c932931492c73d2a02cea65958d498deeJohnny Chen import sb_debugger 11043fc089c932931492c73d2a02cea65958d498deeJohnny Chen sb_debugger.fuzz_obj(obj) 111d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 112d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 113d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBError(self): 114d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBError() 115d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 116d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 117d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 1183801c2cca7646d3d71bdbead8207a52c1d2a4722Johnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 1193801c2cca7646d3d71bdbead8207a52c1d2a4722Johnny Chen import sb_error 1203801c2cca7646d3d71bdbead8207a52c1d2a4722Johnny Chen sb_error.fuzz_obj(obj) 121d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 122d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 123d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBEvent(self): 124d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBEvent() 125cdb1b406c015a93d4b5bebc92785a1cce52cf022Johnny Chen # This is just to test that typemap, as defined in lldb.swig, works. 12633b4be1d7ca14b25d0d57b5a2032971294980996Johnny Chen obj2 = lldb.SBEvent(0, "abc") 127d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 128d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 129d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 130e4a2fd57ad24208cb4c602c3a017aabad8b2f314Johnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 131e4a2fd57ad24208cb4c602c3a017aabad8b2f314Johnny Chen import sb_event 132e4a2fd57ad24208cb4c602c3a017aabad8b2f314Johnny Chen sb_event.fuzz_obj(obj) 133d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 134d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 135d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBFileSpec(self): 136d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBFileSpec() 137287e28b6dfc4f71113fe753223f165128acd4ff5Johnny Chen # This is just to test that FileSpec(None) does not crash. 138287e28b6dfc4f71113fe753223f165128acd4ff5Johnny Chen obj2 = lldb.SBFileSpec(None, True) 139d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 140d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 141d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 1422fe615709082d0847d35c440b84be12a3ca45a20Johnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 1432fe615709082d0847d35c440b84be12a3ca45a20Johnny Chen import sb_filespec 1442fe615709082d0847d35c440b84be12a3ca45a20Johnny Chen sb_filespec.fuzz_obj(obj) 145d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 146d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 147d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBFrame(self): 148d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBFrame() 149d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 150d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 151d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 152c50be73025d175d0df95ea807abb1b2dec1f0e67Johnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 153c50be73025d175d0df95ea807abb1b2dec1f0e67Johnny Chen import sb_frame 154c50be73025d175d0df95ea807abb1b2dec1f0e67Johnny Chen sb_frame.fuzz_obj(obj) 155d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 156d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 157d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBFunction(self): 158d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBFunction() 159d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 160d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 161d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 162c50be73025d175d0df95ea807abb1b2dec1f0e67Johnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 163c50be73025d175d0df95ea807abb1b2dec1f0e67Johnny Chen import sb_function 164c50be73025d175d0df95ea807abb1b2dec1f0e67Johnny Chen sb_function.fuzz_obj(obj) 165d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 166d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 167d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBInputReader(self): 168d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBInputReader() 169d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 170d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 171d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 172b7b4947c5cd2ada69d9d3d4539557853ad9d2d7aJohnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 173b7b4947c5cd2ada69d9d3d4539557853ad9d2d7aJohnny Chen import sb_inputreader 174b7b4947c5cd2ada69d9d3d4539557853ad9d2d7aJohnny Chen sb_inputreader.fuzz_obj(obj) 175d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 176d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 177d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBInstruction(self): 178d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBInstruction() 179d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 180d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 181d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 1821d27c3a4a66a78e3e1b88243e498f83d6fd0ae06Johnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 1831d27c3a4a66a78e3e1b88243e498f83d6fd0ae06Johnny Chen import sb_instruction 1841d27c3a4a66a78e3e1b88243e498f83d6fd0ae06Johnny Chen sb_instruction.fuzz_obj(obj) 185d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 186d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 187d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBInstructionList(self): 188d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBInstructionList() 189d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 190d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 191d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 1921d27c3a4a66a78e3e1b88243e498f83d6fd0ae06Johnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 1931d27c3a4a66a78e3e1b88243e498f83d6fd0ae06Johnny Chen import sb_instructionlist 1941d27c3a4a66a78e3e1b88243e498f83d6fd0ae06Johnny Chen sb_instructionlist.fuzz_obj(obj) 195d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 196d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 197d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBLineEntry(self): 198d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBLineEntry() 199d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 200d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 201d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 202ca8f94a62934494db29d01a235f7d4eb6ee2089dJohnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 203ca8f94a62934494db29d01a235f7d4eb6ee2089dJohnny Chen import sb_lineentry 204ca8f94a62934494db29d01a235f7d4eb6ee2089dJohnny Chen sb_lineentry.fuzz_obj(obj) 205d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 206d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 207d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBListener(self): 208d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBListener() 209d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 210d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 211d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 212ff8e5ed3c017fa958c9cb0a39dc245f8b8453e7bJohnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 213ff8e5ed3c017fa958c9cb0a39dc245f8b8453e7bJohnny Chen import sb_listener 214ff8e5ed3c017fa958c9cb0a39dc245f8b8453e7bJohnny Chen sb_listener.fuzz_obj(obj) 215d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 216d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 217d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBModule(self): 218d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBModule() 219d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 220d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 221d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 222b7a9d64b2558ed5b8c15ce37de47fc7dd33004e8Johnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 223b7a9d64b2558ed5b8c15ce37de47fc7dd33004e8Johnny Chen import sb_module 224b7a9d64b2558ed5b8c15ce37de47fc7dd33004e8Johnny Chen sb_module.fuzz_obj(obj) 225d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 226d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 227d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBProcess(self): 228d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBProcess() 229d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 230d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 231d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 232b7a9d64b2558ed5b8c15ce37de47fc7dd33004e8Johnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 233b7a9d64b2558ed5b8c15ce37de47fc7dd33004e8Johnny Chen import sb_process 234b7a9d64b2558ed5b8c15ce37de47fc7dd33004e8Johnny Chen sb_process.fuzz_obj(obj) 235d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 236d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 2377e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen def test_SBSection(self): 2387e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen obj = lldb.SBSection() 2397e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen if self.TraceOn(): 2407e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen print obj 2417e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen self.assertFalse(obj) 2427e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 2437e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen import sb_section 2447e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen sb_section.fuzz_obj(obj) 2457e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen 2467e98e09fc07cf55899d07c130530a77ecc58c5c8Johnny Chen @python_api_test 247d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBStream(self): 248d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen """SBStream object is valid after default construction.""" 249d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBStream() 250d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 251d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 252d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertTrue(obj) 253d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 254d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 255d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBStringList(self): 256d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBStringList() 257d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 258d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 259d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 2602287366b1427dcafd8b45e6c2de939d70eaebbd3Johnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 2612287366b1427dcafd8b45e6c2de939d70eaebbd3Johnny Chen import sb_stringlist 2622287366b1427dcafd8b45e6c2de939d70eaebbd3Johnny Chen sb_stringlist.fuzz_obj(obj) 263d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 264d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 265d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBSymbol(self): 266d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBSymbol() 267d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 268d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 269d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 270f0e0bc01569e6513a4f88cb5aa2aca30878f4628Johnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 271f0e0bc01569e6513a4f88cb5aa2aca30878f4628Johnny Chen import sb_symbol 272f0e0bc01569e6513a4f88cb5aa2aca30878f4628Johnny Chen sb_symbol.fuzz_obj(obj) 273d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 274d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 275d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBSymbolContext(self): 276d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBSymbolContext() 277d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 278d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 279d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 280f0e0bc01569e6513a4f88cb5aa2aca30878f4628Johnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 281f0e0bc01569e6513a4f88cb5aa2aca30878f4628Johnny Chen import sb_symbolcontext 282f0e0bc01569e6513a4f88cb5aa2aca30878f4628Johnny Chen sb_symbolcontext.fuzz_obj(obj) 283d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 284d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 285d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBSymbolContextList(self): 2869a39f597b4b6b10fc9704682eae51a5beff013f1Johnny Chen """SBSymbolContextList object is valid after default construction.""" 287d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBSymbolContextList() 288d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 289d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 290cd0f93876e9067135593e1e39f4d7f6fc29e24a3Johnny Chen self.assertTrue(obj) 291d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 292d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 293d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBTarget(self): 294d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBTarget() 295d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 296d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 297d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 298e657fbc20b4d5199ad2daae85678f0038df5095dJohnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 299e657fbc20b4d5199ad2daae85678f0038df5095dJohnny Chen import sb_target 300e657fbc20b4d5199ad2daae85678f0038df5095dJohnny Chen sb_target.fuzz_obj(obj) 301d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 302d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 303d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBThread(self): 304d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBThread() 305d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 306d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 307d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 308e657fbc20b4d5199ad2daae85678f0038df5095dJohnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 309e657fbc20b4d5199ad2daae85678f0038df5095dJohnny Chen import sb_thread 310e657fbc20b4d5199ad2daae85678f0038df5095dJohnny Chen sb_thread.fuzz_obj(obj) 311d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 312d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 313d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBType(self): 31474597b88726aade190d4768062a10a67a07cd059Johnny Chen try: 31574597b88726aade190d4768062a10a67a07cd059Johnny Chen obj = lldb.SBType() 31674597b88726aade190d4768062a10a67a07cd059Johnny Chen if self.TraceOn(): 31774597b88726aade190d4768062a10a67a07cd059Johnny Chen print obj 31874597b88726aade190d4768062a10a67a07cd059Johnny Chen self.assertFalse(obj) 31974597b88726aade190d4768062a10a67a07cd059Johnny Chen # If we reach here, the test fails. 32074597b88726aade190d4768062a10a67a07cd059Johnny Chen self.fail("lldb.SBType() should fail, not succeed!") 32174597b88726aade190d4768062a10a67a07cd059Johnny Chen except: 32274597b88726aade190d4768062a10a67a07cd059Johnny Chen # Exception is expected. 32374597b88726aade190d4768062a10a67a07cd059Johnny Chen return 32474597b88726aade190d4768062a10a67a07cd059Johnny Chen 32574597b88726aade190d4768062a10a67a07cd059Johnny Chen # Unreachable code because lldb.SBType() should fail. 326446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 327446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen import sb_type 328446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen sb_type.fuzz_obj(obj) 329d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 330d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 33174597b88726aade190d4768062a10a67a07cd059Johnny Chen def test_SBTypeList(self): 3320c64baff28c9340f84fa566df1bf9426ddd2dc31Johnny Chen """SBTypeList object is valid after default construction.""" 33374597b88726aade190d4768062a10a67a07cd059Johnny Chen obj = lldb.SBTypeList() 334a6c1be6e7fdc713d7b276a8f760d4a38e92bd6a1Johnny Chen if self.TraceOn(): 335a6c1be6e7fdc713d7b276a8f760d4a38e92bd6a1Johnny Chen print obj 3360c64baff28c9340f84fa566df1bf9426ddd2dc31Johnny Chen self.assertTrue(obj) 337a6c1be6e7fdc713d7b276a8f760d4a38e92bd6a1Johnny Chen 338a6c1be6e7fdc713d7b276a8f760d4a38e92bd6a1Johnny Chen @python_api_test 339d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBValue(self): 340d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBValue() 341d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 342d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 343d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 344446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 345446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen import sb_value 346446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen sb_value.fuzz_obj(obj) 347d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 348d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen @python_api_test 349d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen def test_SBValueList(self): 350d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen obj = lldb.SBValueList() 351d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen if self.TraceOn(): 352d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen print obj 353d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen self.assertFalse(obj) 354446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 355446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen import sb_valuelist 356446ccaa81e42b089b6245a950cb4fca05cce12ddJohnny Chen sb_valuelist.fuzz_obj(obj) 357d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 358b59194fb66c078765887a3156e4c2bc32a95543fJohnny Chen @python_api_test 359ecd4feb5111432d2878e95461220c720cb2d24c8Johnny Chen def test_SBWatchpoint(self): 360ecd4feb5111432d2878e95461220c720cb2d24c8Johnny Chen obj = lldb.SBWatchpoint() 361b59194fb66c078765887a3156e4c2bc32a95543fJohnny Chen if self.TraceOn(): 362b59194fb66c078765887a3156e4c2bc32a95543fJohnny Chen print obj 363b59194fb66c078765887a3156e4c2bc32a95543fJohnny Chen self.assertFalse(obj) 364b59194fb66c078765887a3156e4c2bc32a95543fJohnny Chen # Do fuzz testing on the invalid obj, it should not crash lldb. 365ecd4feb5111432d2878e95461220c720cb2d24c8Johnny Chen import sb_watchpoint 366ecd4feb5111432d2878e95461220c720cb2d24c8Johnny Chen sb_watchpoint.fuzz_obj(obj) 367b59194fb66c078765887a3156e4c2bc32a95543fJohnny Chen 368d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen 369d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chenif __name__ == '__main__': 370d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen import atexit 371d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen lldb.SBDebugger.Initialize() 372d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen atexit.register(lambda: lldb.SBDebugger.Terminate()) 373d2554b5b7d4531b44bfbbea00cccc5fd274ef76bJohnny Chen unittest2.main() 374