Files
llvm-project/lldb/test/python_api/default-constructor/TestDefaultConstructorForAPIObjects.py
T

348 lines
10 KiB
Python
Raw Normal View History

"""
2011-06-20 22:33:35 +00:00
Test lldb Python API object's default constructor and make sure it is invalid
after initial construction.
2011-06-24 18:49:27 +00:00
There are three exceptions to the above general rules, though; API objects
SBCommadnReturnObject, SBStream, and SBSymbolContextList, are all valid objects
after default construction.
"""
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)
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_address
sb_address.fuzz_obj(obj)
@python_api_test
def test_SBBlock(self):
obj = lldb.SBBlock()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-24 00:21:36 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_block
sb_block.fuzz_obj(obj)
@python_api_test
def test_SBBreakpoint(self):
obj = lldb.SBBreakpoint()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-24 18:49:27 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_breakpoint
sb_breakpoint.fuzz_obj(obj)
@python_api_test
def test_SBBreakpointLocation(self):
obj = lldb.SBBreakpointLocation()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-24 19:00:22 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_breakpointlocation
sb_breakpointlocation.fuzz_obj(obj)
@python_api_test
def test_SBBroadcaster(self):
obj = lldb.SBBroadcaster()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-24 22:53:12 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_broadcaster
sb_broadcaster.fuzz_obj(obj)
@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-24 23:16:27 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_communication
sb_communication.fuzz_obj(obj)
@python_api_test
def test_SBCompileUnit(self):
obj = lldb.SBCompileUnit()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-24 23:33:03 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_compileunit
sb_compileunit.fuzz_obj(obj)
@python_api_test
def test_SBDebugger(self):
obj = lldb.SBDebugger()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-25 00:09:29 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_debugger
sb_debugger.fuzz_obj(obj)
@python_api_test
def test_SBError(self):
obj = lldb.SBError()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-25 00:21:00 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_error
sb_error.fuzz_obj(obj)
@python_api_test
def test_SBEvent(self):
obj = lldb.SBEvent()
2011-07-08 23:07:53 +00:00
# This is just to test that typemap, as defined in lldb.swig, works.
2011-07-08 23:02:33 +00:00
obj2 = lldb.SBEvent(0, "abc")
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-27 22:38:57 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_event
sb_event.fuzz_obj(obj)
@python_api_test
def test_SBFileSpec(self):
obj = lldb.SBFileSpec()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-27 22:55:51 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_filespec
sb_filespec.fuzz_obj(obj)
@python_api_test
def test_SBFrame(self):
obj = lldb.SBFrame()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-27 23:53:55 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_frame
sb_frame.fuzz_obj(obj)
@python_api_test
def test_SBFunction(self):
obj = lldb.SBFunction()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-27 23:53:55 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_function
sb_function.fuzz_obj(obj)
@python_api_test
def test_SBInputReader(self):
obj = lldb.SBInputReader()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-28 00:12:06 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_inputreader
sb_inputreader.fuzz_obj(obj)
@python_api_test
def test_SBInstruction(self):
obj = lldb.SBInstruction()
if self.TraceOn():
print obj
self.assertFalse(obj)
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_instruction
sb_instruction.fuzz_obj(obj)
@python_api_test
def test_SBInstructionList(self):
obj = lldb.SBInstructionList()
if self.TraceOn():
print obj
self.assertFalse(obj)
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_instructionlist
sb_instructionlist.fuzz_obj(obj)
@python_api_test
def test_SBLineEntry(self):
obj = lldb.SBLineEntry()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-28 20:46:03 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_lineentry
sb_lineentry.fuzz_obj(obj)
@python_api_test
def test_SBListener(self):
obj = lldb.SBListener()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-28 20:57:22 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_listener
sb_listener.fuzz_obj(obj)
@python_api_test
def test_SBModule(self):
obj = lldb.SBModule()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-28 22:32:15 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_module
sb_module.fuzz_obj(obj)
@python_api_test
def test_SBProcess(self):
obj = lldb.SBProcess()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-28 22:32:15 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_process
sb_process.fuzz_obj(obj)
@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)
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_stringlist
sb_stringlist.fuzz_obj(obj)
@python_api_test
def test_SBSymbol(self):
obj = lldb.SBSymbol()
if self.TraceOn():
print obj
self.assertFalse(obj)
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_symbol
sb_symbol.fuzz_obj(obj)
@python_api_test
def test_SBSymbolContext(self):
obj = lldb.SBSymbolContext()
if self.TraceOn():
print obj
self.assertFalse(obj)
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_symbolcontext
sb_symbolcontext.fuzz_obj(obj)
@python_api_test
def test_SBSymbolContextList(self):
"""SBSymbolContextList object is valid after default construction."""
obj = lldb.SBSymbolContextList()
if self.TraceOn():
print obj
self.assertTrue(obj)
@python_api_test
def test_SBTarget(self):
obj = lldb.SBTarget()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-29 00:05:40 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_target
sb_target.fuzz_obj(obj)
@python_api_test
def test_SBThread(self):
obj = lldb.SBThread()
if self.TraceOn():
print obj
self.assertFalse(obj)
2011-06-29 00:05:40 +00:00
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_thread
sb_thread.fuzz_obj(obj)
@python_api_test
def test_SBType(self):
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.
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_type
sb_type.fuzz_obj(obj)
2011-06-29 21:42:46 +00:00
@python_api_test
def test_SBTypeList(self):
"""SBTypeList object is valid after default construction."""
obj = lldb.SBTypeList()
2011-06-29 21:42:46 +00:00
if self.TraceOn():
print obj
self.assertTrue(obj)
2011-06-29 21:42:46 +00:00
@python_api_test
def test_SBValue(self):
obj = lldb.SBValue()
if self.TraceOn():
print obj
self.assertFalse(obj)
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_value
sb_value.fuzz_obj(obj)
@python_api_test
def test_SBValueList(self):
obj = lldb.SBValueList()
if self.TraceOn():
print obj
self.assertFalse(obj)
# Do fuzz testing on the invalid obj, it should not crash lldb.
import sb_valuelist
sb_valuelist.fuzz_obj(obj)
if __name__ == '__main__':
import atexit
lldb.SBDebugger.Initialize()
atexit.register(lambda: lldb.SBDebugger.Terminate())
unittest2.main()