2011-06-21 06:30:48 +08:00
|
|
|
"""
|
2011-06-21 06:33:35 +08:00
|
|
|
Test lldb Python API object's default constructor and make sure it is invalid
|
2011-06-21 06:30:48 +08:00
|
|
|
after initial construction.
|
|
|
|
|
2011-06-25 02:49:27 +08:00
|
|
|
There are three exceptions to the above general rules, though; API objects
|
|
|
|
SBCommadnReturnObject, SBStream, and SBSymbolContextList, are all valid objects
|
|
|
|
after default construction.
|
2011-06-21 06:30:48 +08:00
|
|
|
"""
|
|
|
|
|
|
|
|
import os, time
|
|
|
|
import re
|
|
|
|
import unittest2
|
|
|
|
import lldb, lldbutil
|
|
|
|
from lldbtest import *
|
|
|
|
|
|
|
|
class APIDefaultConstructorTestCase(TestBase):
|
|
|
|
|
|
|
|
mydir = os.path.join("python_api", "default-constructor")
|
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBAddress(self):
|
|
|
|
obj = lldb.SBAddress()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-24 08:06:53 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_address
|
|
|
|
sb_address.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBBlock(self):
|
|
|
|
obj = lldb.SBBlock()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-24 08:21:36 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_block
|
|
|
|
sb_block.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBBreakpoint(self):
|
|
|
|
obj = lldb.SBBreakpoint()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-25 02:49:27 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_breakpoint
|
|
|
|
sb_breakpoint.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBBreakpointLocation(self):
|
|
|
|
obj = lldb.SBBreakpointLocation()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-25 03:00:22 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_breakpointlocation
|
|
|
|
sb_breakpointlocation.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBBroadcaster(self):
|
|
|
|
obj = lldb.SBBroadcaster()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-25 06:53:12 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_broadcaster
|
|
|
|
sb_broadcaster.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBCommandReturnObject(self):
|
|
|
|
"""SBCommandReturnObject object is valid after default construction."""
|
|
|
|
obj = lldb.SBCommandReturnObject()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertTrue(obj)
|
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBCommunication(self):
|
|
|
|
obj = lldb.SBCommunication()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-25 07:16:27 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_communication
|
|
|
|
sb_communication.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBCompileUnit(self):
|
|
|
|
obj = lldb.SBCompileUnit()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-25 07:33:03 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_compileunit
|
|
|
|
sb_compileunit.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBDebugger(self):
|
|
|
|
obj = lldb.SBDebugger()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-25 08:09:29 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_debugger
|
|
|
|
sb_debugger.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBError(self):
|
|
|
|
obj = lldb.SBError()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-25 08:21:00 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_error
|
|
|
|
sb_error.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBEvent(self):
|
|
|
|
obj = lldb.SBEvent()
|
2011-07-09 07:07:53 +08:00
|
|
|
# This is just to test that typemap, as defined in lldb.swig, works.
|
2011-07-09 07:02:33 +08:00
|
|
|
obj2 = lldb.SBEvent(0, "abc")
|
2011-06-21 06:30:48 +08:00
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-28 06:38:57 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_event
|
|
|
|
sb_event.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBFileSpec(self):
|
|
|
|
obj = lldb.SBFileSpec()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-28 06:55:51 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_filespec
|
|
|
|
sb_filespec.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBFrame(self):
|
|
|
|
obj = lldb.SBFrame()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-28 07:53:55 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_frame
|
|
|
|
sb_frame.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBFunction(self):
|
|
|
|
obj = lldb.SBFunction()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-28 07:53:55 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_function
|
|
|
|
sb_function.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBInputReader(self):
|
|
|
|
obj = lldb.SBInputReader()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-28 08:12:06 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_inputreader
|
|
|
|
sb_inputreader.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBInstruction(self):
|
|
|
|
obj = lldb.SBInstruction()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-29 03:07:02 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_instruction
|
|
|
|
sb_instruction.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBInstructionList(self):
|
|
|
|
obj = lldb.SBInstructionList()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-29 03:07:02 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_instructionlist
|
|
|
|
sb_instructionlist.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBLineEntry(self):
|
|
|
|
obj = lldb.SBLineEntry()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-29 04:46:03 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_lineentry
|
|
|
|
sb_lineentry.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBListener(self):
|
|
|
|
obj = lldb.SBListener()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-29 04:57:22 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_listener
|
|
|
|
sb_listener.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBModule(self):
|
|
|
|
obj = lldb.SBModule()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-29 06:32:15 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_module
|
|
|
|
sb_module.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBProcess(self):
|
|
|
|
obj = lldb.SBProcess()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-29 06:32:15 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_process
|
|
|
|
sb_process.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBStream(self):
|
|
|
|
"""SBStream object is valid after default construction."""
|
|
|
|
obj = lldb.SBStream()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertTrue(obj)
|
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBStringList(self):
|
|
|
|
obj = lldb.SBStringList()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-29 07:29:14 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_stringlist
|
|
|
|
sb_stringlist.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBSymbol(self):
|
|
|
|
obj = lldb.SBSymbol()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-29 07:38:38 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_symbol
|
|
|
|
sb_symbol.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBSymbolContext(self):
|
|
|
|
obj = lldb.SBSymbolContext()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-29 07:38:38 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_symbolcontext
|
|
|
|
sb_symbolcontext.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBSymbolContextList(self):
|
2011-06-23 04:57:52 +08:00
|
|
|
"""SBSymbolContextList object is valid after default construction."""
|
2011-06-21 06:30:48 +08:00
|
|
|
obj = lldb.SBSymbolContextList()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
2011-06-22 10:39:46 +08:00
|
|
|
self.assertTrue(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBTarget(self):
|
|
|
|
obj = lldb.SBTarget()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-29 08:05:40 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_target
|
|
|
|
sb_target.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBThread(self):
|
|
|
|
obj = lldb.SBThread()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-29 08:05:40 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_thread
|
|
|
|
sb_thread.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBType(self):
|
2011-08-05 08:07:41 +08:00
|
|
|
try:
|
|
|
|
obj = lldb.SBType()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
|
|
|
# If we reach here, the test fails.
|
|
|
|
self.fail("lldb.SBType() should fail, not succeed!")
|
|
|
|
except:
|
|
|
|
# Exception is expected.
|
|
|
|
return
|
|
|
|
|
|
|
|
# Unreachable code because lldb.SBType() should fail.
|
2011-06-30 05:19:39 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_type
|
|
|
|
sb_type.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
2011-06-30 05:42:46 +08:00
|
|
|
@python_api_test
|
2011-08-05 08:07:41 +08:00
|
|
|
def test_SBTypeList(self):
|
|
|
|
obj = lldb.SBTypeList()
|
2011-06-30 05:42:46 +08:00
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
2011-08-05 08:07:41 +08:00
|
|
|
self.assertTrue(obj)
|
2011-06-30 05:42:46 +08:00
|
|
|
|
2011-06-21 06:30:48 +08:00
|
|
|
@python_api_test
|
|
|
|
def test_SBValue(self):
|
|
|
|
obj = lldb.SBValue()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-30 05:19:39 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_value
|
|
|
|
sb_value.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
@python_api_test
|
|
|
|
def test_SBValueList(self):
|
|
|
|
obj = lldb.SBValueList()
|
|
|
|
if self.TraceOn():
|
|
|
|
print obj
|
|
|
|
self.assertFalse(obj)
|
2011-06-30 05:19:39 +08:00
|
|
|
# Do fuzz testing on the invalid obj, it should not crash lldb.
|
|
|
|
import sb_valuelist
|
|
|
|
sb_valuelist.fuzz_obj(obj)
|
2011-06-21 06:30:48 +08:00
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
import atexit
|
|
|
|
lldb.SBDebugger.Initialize()
|
|
|
|
atexit.register(lambda: lldb.SBDebugger.Terminate())
|
|
|
|
unittest2.main()
|