1//===-- ProcessEventDataTest.cpp ------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#include "lldb/Target/ProcessTrace.h"
10#include "Plugins/Platform/Linux/PlatformLinux.h"
11#include "lldb/Core/Debugger.h"
12#include "lldb/Host/HostInfo.h"
13#include "gtest/gtest.h"
14
15using namespace lldb_private;
16using namespace lldb;
17using namespace platform_linux;
18
19// This is needed for the tests that create a trace process.
20class ProcessTraceTest : public ::testing::Test {
21public:
22 void SetUp() override {
23 ProcessTrace::Initialize();
24 FileSystem::Initialize();
25 HostInfo::Initialize();
26 PlatformLinux::Initialize();
27 }
28 void TearDown() override {
29 PlatformLinux::Initialize();
30 HostInfo::Terminate();
31 FileSystem::Terminate();
32 ProcessTrace::Terminate();
33 }
34};
35
36TargetSP CreateTarget(DebuggerSP &debugger_sp, const ArchSpec &arch) {
37 PlatformSP platform_sp;
38 TargetSP target_sp;
39 debugger_sp->GetTargetList().CreateTarget(
40 debugger&: *debugger_sp, user_exe_path: "", arch, get_dependent_modules: eLoadDependentsNo, platform_sp, target_sp);
41 return target_sp;
42}
43
44// Test that we can create a process trace with a nullptr core file.
45TEST_F(ProcessTraceTest, ConstructorWithNullptrCoreFile) {
46 ArchSpec arch("i386-pc-linux");
47
48 Platform::SetHostPlatform(PlatformLinux::CreateInstance(force: true, arch: &arch));
49 ASSERT_NE(Platform::GetHostPlatform(), nullptr);
50
51 DebuggerSP debugger_sp = Debugger::CreateInstance();
52 ASSERT_TRUE(debugger_sp);
53
54 TargetSP target_sp = CreateTarget(debugger_sp, arch);
55 ASSERT_TRUE(target_sp);
56
57 ProcessSP process_sp = target_sp->CreateProcess(
58 /*listener*/ listener_sp: nullptr, plugin_name: "trace",
59 /*crash_file*/ nullptr,
60 /*can_connect*/ false);
61
62 ASSERT_NE(process_sp, nullptr);
63}
64

source code of lldb/unittests/Process/ProcessTraceTest.cpp