Summary: Moves lldbsuite tests to lldb/test/API.
This is a largely mechanical change, moved with the following steps:
```
rm lldb/test/API/testcases
mkdir -p lldb/test/API/{test_runner/test,tools/lldb-{server,vscode}}
mv lldb/packages/Python/lldbsuite/test/test_runner/test lldb/test/API/test_runner
for d in $(find lldb/packages/Python/lldbsuite/test/* -maxdepth 0 -type d | egrep -v "make|plugins|test_runner|tools"); do mv $d lldb/test/API; done
for d in $(find lldb/packages/Python/lldbsuite/test/tools/lldb-vscode -maxdepth 1 -mindepth 1 | grep -v ".py"); do mv $d lldb/test/API/tools/lldb-vscode; done
for d in $(find lldb/packages/Python/lldbsuite/test/tools/lldb-server -maxdepth 1 -mindepth 1 | egrep -v "gdbremote_testcase.py|lldbgdbserverutils.py|socket_packet_pump.py"); do mv $d lldb/test/API/tools/lldb-server; done
```
lldb/packages/Python/lldbsuite/__init__.py and lldb/test/API/lit.cfg.py were also updated with the new directory structure.
Reviewers: labath, JDevlieghere
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D71151
50 lines
1.3 KiB
Plaintext
50 lines
1.3 KiB
Plaintext
|
|
// LLDB C++ API Test: verify that the function registered with
|
|
// SBBreakpoint.SetCallback() is invoked when a breakpoint is hit.
|
|
|
|
#include <mutex>
|
|
#include <iostream>
|
|
#include <vector>
|
|
#include <string>
|
|
|
|
%include_SB_APIs%
|
|
|
|
#include "common.h"
|
|
|
|
using namespace std;
|
|
using namespace lldb;
|
|
|
|
mutex g_mutex;
|
|
condition_variable g_condition;
|
|
int g_breakpoint_hit_count = 0;
|
|
|
|
bool BPCallback (void *baton,
|
|
SBProcess &process,
|
|
SBThread &thread,
|
|
SBBreakpointLocation &location) {
|
|
lock_guard<mutex> lock(g_mutex);
|
|
g_breakpoint_hit_count += 1;
|
|
g_condition.notify_all();
|
|
return true;
|
|
}
|
|
|
|
void test(SBDebugger &dbg, vector<string> args) {
|
|
dbg.SetAsync(false);
|
|
SBTarget target = dbg.CreateTarget(args.at(0).c_str());
|
|
if (!target.IsValid()) throw Exception("invalid target");
|
|
|
|
SBBreakpoint breakpoint = target.BreakpointCreateByName("next");
|
|
if (!breakpoint.IsValid()) throw Exception("invalid breakpoint");
|
|
breakpoint.SetCallback(BPCallback, 0);
|
|
|
|
std::unique_ptr<char> working_dir(get_working_dir());
|
|
SBProcess process = target.LaunchSimple (0, 0, working_dir.get());
|
|
|
|
{
|
|
unique_lock<mutex> lock(g_mutex);
|
|
g_condition.wait_for(lock, chrono::seconds(5));
|
|
if (g_breakpoint_hit_count != 1)
|
|
throw Exception("Breakpoint hit count expected to be 1");
|
|
}
|
|
}
|