1*67f94e5aSSiger Yang_T = require('lua_lldb_test').create_test('TestProcessAPI') 2*67f94e5aSSiger Yang 3*67f94e5aSSiger Yangfunction _T:TestProcessLaunchSimple() 4*67f94e5aSSiger Yang local target = self:create_target() 5*67f94e5aSSiger Yang local args = { 'arg1', 'arg2', 'arg3' } 6*67f94e5aSSiger Yang local process = target:LaunchSimple( 7*67f94e5aSSiger Yang -- argv 8*67f94e5aSSiger Yang args, 9*67f94e5aSSiger Yang -- envp 10*67f94e5aSSiger Yang nil, 11*67f94e5aSSiger Yang -- working directory 12*67f94e5aSSiger Yang nil 13*67f94e5aSSiger Yang ) 14*67f94e5aSSiger Yang assertTrue(process:IsValid()) 15*67f94e5aSSiger Yang local stdout = process:GetSTDOUT(1000) 16*67f94e5aSSiger Yang assertEquals(split_lines(stdout), {self.exe, table.unpack(args)}) 17*67f94e5aSSiger Yangend 18*67f94e5aSSiger Yang 19*67f94e5aSSiger Yangfunction _T:TestProcessLaunch() 20*67f94e5aSSiger Yang local target = self:create_target() 21*67f94e5aSSiger Yang local args = { 'arg1', 'arg2', 'arg3' } 22*67f94e5aSSiger Yang local error = lldb.SBError() 23*67f94e5aSSiger Yang local f = io.open(self.output, 'w') 24*67f94e5aSSiger Yang f:write() 25*67f94e5aSSiger Yang f:close() 26*67f94e5aSSiger Yang local process = target:Launch( 27*67f94e5aSSiger Yang -- listener 28*67f94e5aSSiger Yang self.debugger:GetListener(), 29*67f94e5aSSiger Yang -- argv 30*67f94e5aSSiger Yang args, 31*67f94e5aSSiger Yang -- envp 32*67f94e5aSSiger Yang nil, 33*67f94e5aSSiger Yang -- stdin 34*67f94e5aSSiger Yang nil, 35*67f94e5aSSiger Yang -- stdout 36*67f94e5aSSiger Yang self.output, 37*67f94e5aSSiger Yang -- stderr 38*67f94e5aSSiger Yang nil, 39*67f94e5aSSiger Yang -- working directory 40*67f94e5aSSiger Yang nil, 41*67f94e5aSSiger Yang -- launch flags 42*67f94e5aSSiger Yang 0, 43*67f94e5aSSiger Yang -- stop at entry 44*67f94e5aSSiger Yang true, 45*67f94e5aSSiger Yang -- error 46*67f94e5aSSiger Yang error 47*67f94e5aSSiger Yang ) 48*67f94e5aSSiger Yang assertTrue(error:Success()) 49*67f94e5aSSiger Yang assertTrue(process:IsValid()) 50*67f94e5aSSiger Yang local threads = get_stopped_threads(process, lldb.eStopReasonSignal) 51*67f94e5aSSiger Yang assertTrue(#threads ~= 0) 52*67f94e5aSSiger Yang local continue = process:Continue() 53*67f94e5aSSiger Yang assertTrue(continue:Success()) 54*67f94e5aSSiger Yang local f = io.open(self.output, 'r') 55*67f94e5aSSiger Yang assertEquals(read_file_non_empty_lines(f), {self.exe, table.unpack(args)}) 56*67f94e5aSSiger Yang f:close() 57*67f94e5aSSiger Yangend 58*67f94e5aSSiger Yang 59*67f94e5aSSiger Yangos.exit(_T:run()) 60