mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 11:06:07 +00:00

assertEquals is a deprecated alias for assertEqual and has been removed in Python 3.12. This wasn't an issue previously because we used a vendored version of the unittest module. Now that we use the built-in version this gets updated together with the Python version used to run the test suite.
100 lines
3.2 KiB
Lua
100 lines
3.2 KiB
Lua
_T = require('lua_lldb_test').create_test('TestComprehensive')
|
|
|
|
function _T:Test0_CreateTarget()
|
|
self.target = self:create_target()
|
|
assertTrue(self.target:IsValid())
|
|
end
|
|
|
|
function _T:Test1_Breakpoint()
|
|
self.main_bp = self.target:BreakpointCreateByName('main', 'a.out')
|
|
self.loop_bp = self.target:BreakpointCreateByLocation('main.c', 28)
|
|
assertTrue(self.main_bp:IsValid() and self.main_bp:GetNumLocations() == 1)
|
|
assertTrue(self.loop_bp:IsValid() and self.loop_bp:GetNumLocations() == 1)
|
|
end
|
|
|
|
function _T:Test2_Launch()
|
|
local error = lldb.SBError()
|
|
self.args = { 'arg' }
|
|
self.process = self.target:Launch(
|
|
self.debugger:GetListener(),
|
|
self.args,
|
|
nil,
|
|
nil,
|
|
self.output,
|
|
nil,
|
|
nil,
|
|
0,
|
|
false,
|
|
error
|
|
)
|
|
assertTrue(error:Success())
|
|
assertTrue(self.process:IsValid())
|
|
end
|
|
|
|
function _T:Test3_BreakpointFindVariables()
|
|
-- checking "argc" value
|
|
local thread = get_stopped_thread(self.process, lldb.eStopReasonBreakpoint)
|
|
assertNotNil(thread)
|
|
assertTrue(thread:IsValid())
|
|
local frame = thread:GetFrameAtIndex(0)
|
|
assertTrue(frame:IsValid())
|
|
local error = lldb.SBError()
|
|
local var_argc = frame:FindVariable('argc')
|
|
assertTrue(var_argc:IsValid())
|
|
local var_argc_value = var_argc:GetValueAsSigned(error, 0)
|
|
assertTrue(error:Success())
|
|
assertEqual(var_argc_value, 2)
|
|
|
|
-- checking "inited" value
|
|
local continue = self.process:Continue()
|
|
assertTrue(continue:Success())
|
|
thread = get_stopped_thread(self.process, lldb.eStopReasonBreakpoint)
|
|
assertNotNil(thread)
|
|
assertTrue(thread:IsValid())
|
|
frame = thread:GetFrameAtIndex(0)
|
|
assertTrue(frame:IsValid())
|
|
error = lldb.SBError()
|
|
local var_inited = frame:FindVariable('inited')
|
|
assertTrue(var_inited:IsValid())
|
|
self.var_inited = var_inited
|
|
local var_inited_value = var_inited:GetValueAsUnsigned(error, 0)
|
|
assertTrue(error:Success())
|
|
assertEqual(var_inited_value, 0xDEADBEEF)
|
|
end
|
|
|
|
function _T:Test3_RawData()
|
|
local error = lldb.SBError()
|
|
local address = self.var_inited:GetAddress()
|
|
assertTrue(address:IsValid())
|
|
local size = self.var_inited:GetByteSize()
|
|
local raw_data = self.process:ReadMemory(address:GetOffset(), size, error)
|
|
assertTrue(error:Success())
|
|
local data_le = lldb.SBData.CreateDataFromUInt32Array(lldb.eByteOrderLittle, 1, {0xDEADBEEF})
|
|
local data_be = lldb.SBData.CreateDataFromUInt32Array(lldb.eByteOrderBig, 1, {0xDEADBEEF})
|
|
assertTrue(data_le:GetUnsignedInt32(error, 0) == 0xDEADBEEF or data_be:GetUnsignedInt32(error, 0) == 0xDEADBEEF)
|
|
assertTrue(raw_data == "\xEF\xBE\xAD\xDE" or raw_data == "\xDE\xAD\xBE\xEF")
|
|
end
|
|
|
|
function _T:Test4_ProcessExit()
|
|
self.loop_bp:SetAutoContinue(true)
|
|
local continue = self.process:Continue()
|
|
assertTrue(continue:Success())
|
|
assertTrue(self.process:GetExitStatus() == 0)
|
|
end
|
|
|
|
function _T:Test5_FileOutput()
|
|
local f = io.open(self.output, 'r')
|
|
assertEqual(
|
|
read_file_non_empty_lines(f),
|
|
{
|
|
self.exe,
|
|
table.unpack(self.args),
|
|
'I am a function.',
|
|
'sum = 5050'
|
|
}
|
|
)
|
|
f:close()
|
|
end
|
|
|
|
os.exit(_T:run())
|