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