xref: /llvm-project/lldb/test/API/lua_api/TestProcessAPI.lua (revision 80fcecb13c388ff087a27a4b0e7ca3dd8c98eaa4)
167f94e5aSSiger Yang_T = require('lua_lldb_test').create_test('TestProcessAPI')
267f94e5aSSiger Yang
367f94e5aSSiger Yangfunction _T:TestProcessLaunchSimple()
467f94e5aSSiger Yang    local target = self:create_target()
567f94e5aSSiger Yang    local args = { 'arg1', 'arg2', 'arg3' }
667f94e5aSSiger Yang    local process = target:LaunchSimple(
767f94e5aSSiger Yang        -- argv
867f94e5aSSiger Yang        args,
967f94e5aSSiger Yang        -- envp
1067f94e5aSSiger Yang        nil,
1167f94e5aSSiger Yang        -- working directory
1267f94e5aSSiger Yang        nil
1367f94e5aSSiger Yang    )
1467f94e5aSSiger Yang    assertTrue(process:IsValid())
1567f94e5aSSiger Yang    local stdout = process:GetSTDOUT(1000)
16*80fcecb1SJonas Devlieghere    assertEqual(split_lines(stdout), {self.exe, table.unpack(args)})
1767f94e5aSSiger Yangend
1867f94e5aSSiger Yang
1967f94e5aSSiger Yangfunction _T:TestProcessLaunch()
2067f94e5aSSiger Yang    local target = self:create_target()
2167f94e5aSSiger Yang    local args = { 'arg1', 'arg2', 'arg3' }
2267f94e5aSSiger Yang    local error = lldb.SBError()
2367f94e5aSSiger Yang    local f = io.open(self.output, 'w')
2467f94e5aSSiger Yang    f:write()
2567f94e5aSSiger Yang    f:close()
2667f94e5aSSiger Yang    local process = target:Launch(
2767f94e5aSSiger Yang        -- listener
2867f94e5aSSiger Yang        self.debugger:GetListener(),
2967f94e5aSSiger Yang        -- argv
3067f94e5aSSiger Yang        args,
3167f94e5aSSiger Yang        -- envp
3267f94e5aSSiger Yang        nil,
3367f94e5aSSiger Yang        -- stdin
3467f94e5aSSiger Yang        nil,
3567f94e5aSSiger Yang        -- stdout
3667f94e5aSSiger Yang        self.output,
3767f94e5aSSiger Yang        -- stderr
3867f94e5aSSiger Yang        nil,
3967f94e5aSSiger Yang        -- working directory
4067f94e5aSSiger Yang        nil,
4167f94e5aSSiger Yang        -- launch flags
4267f94e5aSSiger Yang        0,
4367f94e5aSSiger Yang        -- stop at entry
4467f94e5aSSiger Yang        true,
4567f94e5aSSiger Yang        -- error
4667f94e5aSSiger Yang        error
4767f94e5aSSiger Yang    )
4867f94e5aSSiger Yang    assertTrue(error:Success())
4967f94e5aSSiger Yang    assertTrue(process:IsValid())
5067f94e5aSSiger Yang    local threads = get_stopped_threads(process, lldb.eStopReasonSignal)
5167f94e5aSSiger Yang    assertTrue(#threads ~= 0)
5267f94e5aSSiger Yang    local continue = process:Continue()
5367f94e5aSSiger Yang    assertTrue(continue:Success())
5467f94e5aSSiger Yang    local f = io.open(self.output, 'r')
55*80fcecb1SJonas Devlieghere    assertEqual(read_file_non_empty_lines(f), {self.exe, table.unpack(args)})
5667f94e5aSSiger Yang    f:close()
5767f94e5aSSiger Yangend
5867f94e5aSSiger Yang
5967f94e5aSSiger Yangos.exit(_T:run())
60