forked from OSchip/llvm-project
[Test Suite] Pull generateSource into lldbtest
Summary: Convert tests using LLDB headers to use generateSource to put the right include paths in place regardless of whether or not you're building a framework. This also abstracted generateSource out of TestPublicAPIHeaders.py into lldbtest.py. Reviewers: tfiala, zturner Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D25887 llvm-svn: 285542
This commit is contained in:
parent
bd6d69987c
commit
f8ac2da114
|
@ -19,9 +19,9 @@ class SBDirCheckerCase(TestBase):
|
|||
|
||||
def setUp(self):
|
||||
TestBase.setUp(self)
|
||||
self.template = 'main.cpp.template'
|
||||
self.source = 'main.cpp'
|
||||
self.exe_name = 'a.out'
|
||||
self.generateSource(self.source)
|
||||
|
||||
@skipIfNoSBHeaders
|
||||
def test_sb_api_directory(self):
|
||||
|
@ -34,40 +34,9 @@ class SBDirCheckerCase(TestBase):
|
|||
self.skipTest(
|
||||
"LLDB is 64-bit and cannot be linked to 32-bit test program.")
|
||||
|
||||
# Generate main.cpp, build it, and execute.
|
||||
self.generate_main_cpp()
|
||||
self.buildDriver(self.source, self.exe_name)
|
||||
self.sanity_check_executable(self.exe_name)
|
||||
|
||||
def generate_main_cpp(self):
|
||||
"""Generate main.cpp from main.cpp.template."""
|
||||
temp = os.path.join(os.getcwd(), self.template)
|
||||
with open(temp, 'r') as f:
|
||||
content = f.read()
|
||||
|
||||
public_api_dir = os.path.join(
|
||||
os.environ["LLDB_SRC"], "include", "lldb", "API")
|
||||
|
||||
# Look under the include/lldb/API directory and add #include statements
|
||||
# for all the SB API headers.
|
||||
public_headers = os.listdir(public_api_dir)
|
||||
# For different platforms, the include statement can vary.
|
||||
if self.platformIsDarwin():
|
||||
include_stmt = "'#include <%s>' % os.path.join('LLDB', header)"
|
||||
if self.getPlatform() == "freebsd" or self.getPlatform(
|
||||
) == "linux" or os.environ.get('LLDB_BUILD_TYPE') == 'Makefile':
|
||||
include_stmt = "'#include <%s>' % os.path.join(public_api_dir, header)"
|
||||
list = [eval(include_stmt) for header in public_headers if (
|
||||
header.startswith("SB") and header.endswith(".h"))]
|
||||
includes = '\n'.join(list)
|
||||
new_content = content.replace('%include_SB_APIs%', includes)
|
||||
src = os.path.join(os.getcwd(), self.source)
|
||||
with open(src, 'w') as f:
|
||||
f.write(new_content)
|
||||
|
||||
# The main.cpp has been generated, add a teardown hook to remove it.
|
||||
self.addTearDownHook(lambda: os.remove(src))
|
||||
|
||||
def sanity_check_executable(self, exe_name):
|
||||
"""Sanity check executable compiled from the auto-generated program."""
|
||||
exe = os.path.join(os.getcwd(), exe_name)
|
||||
|
|
|
@ -15,6 +15,15 @@ import subprocess
|
|||
|
||||
class SBBreakpointCallbackCase(TestBase):
|
||||
|
||||
def setUp(self):
|
||||
TestBase.setUp(self)
|
||||
self.generateSource('driver.cpp')
|
||||
self.generateSource('listener_test.cpp')
|
||||
self.generateSource('test_breakpoint_callback.cpp')
|
||||
self.generateSource('test_listener_event_description.cpp')
|
||||
self.generateSource('test_listener_event_process_state.cpp')
|
||||
self.generateSource('test_listener_resume.cpp')
|
||||
|
||||
mydir = TestBase.compute_mydir(__file__)
|
||||
|
||||
@skipIfRemote
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "lldb-headers.h"
|
||||
%include_SB_APIs%
|
||||
|
||||
#include "common.h"
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
#include <thread>
|
||||
#include <vector>
|
||||
|
||||
#include "lldb-headers.h"
|
||||
%include_SB_APIs%
|
||||
#include "common.h"
|
||||
|
||||
using namespace lldb;
|
|
@ -1,11 +0,0 @@
|
|||
|
||||
#ifndef LLDB_HEADERS_H
|
||||
#define LLDB_HEADERS_H
|
||||
|
||||
#ifdef __APPLE__
|
||||
#include <LLDB/LLDB.h>
|
||||
#else
|
||||
#include "lldb/API/LLDB.h"
|
||||
#endif
|
||||
|
||||
#endif // LLDB_HEADERS_H
|
|
@ -7,7 +7,7 @@
|
|||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#include "lldb-headers.h"
|
||||
%include_SB_APIs%
|
||||
|
||||
#include "common.h"
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
#include <string>
|
||||
#include <thread>
|
||||
|
||||
#include "lldb-headers.h"
|
||||
%include_SB_APIs%
|
||||
|
||||
#include "common.h"
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
#include <string>
|
||||
#include <thread>
|
||||
|
||||
#include "lldb-headers.h"
|
||||
%include_SB_APIs%
|
||||
|
||||
#include "common.h"
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
#include <string>
|
||||
#include <thread>
|
||||
|
||||
#include "lldb-headers.h"
|
||||
%include_SB_APIs%
|
||||
|
||||
#include "common.h"
|
||||
|
|
@ -18,6 +18,10 @@ class PluginCommandTestCase(TestBase):
|
|||
|
||||
mydir = TestBase.compute_mydir(__file__)
|
||||
|
||||
def setUp(self):
|
||||
TestBase.setUp(self)
|
||||
self.generateSource('plugin.cpp')
|
||||
|
||||
@skipIfNoSBHeaders
|
||||
# Requires a compatible arch and platform to link against the host's built
|
||||
# lldb lib.
|
||||
|
|
|
@ -13,15 +13,7 @@ Compile this into a dylib foo.dylib and load by placing in appropriate locations
|
|||
by typing plugin load foo.dylib at the LLDB command line
|
||||
*/
|
||||
|
||||
#if defined (__APPLE__)
|
||||
#include <LLDB/SBCommandInterpreter.h>
|
||||
#include <LLDB/SBCommandReturnObject.h>
|
||||
#include <LLDB/SBDebugger.h>
|
||||
#else
|
||||
#include <lldb/API/SBCommandInterpreter.h>
|
||||
#include <lldb/API/SBCommandReturnObject.h>
|
||||
#include <lldb/API/SBDebugger.h>
|
||||
#endif
|
||||
%include_SB_APIs%
|
||||
|
||||
namespace lldb {
|
||||
bool
|
|
@ -1848,6 +1848,33 @@ class TestBase(Base):
|
|||
folder = os.path.dirname(folder)
|
||||
continue
|
||||
|
||||
def generateSource(self, source):
|
||||
template = source + '.template'
|
||||
temp = os.path.join(os.getcwd(), template)
|
||||
with open(temp, 'r') as f:
|
||||
content = f.read()
|
||||
|
||||
public_api_dir = os.path.join(
|
||||
os.environ["LLDB_SRC"], "include", "lldb", "API")
|
||||
|
||||
# Look under the include/lldb/API directory and add #include statements
|
||||
# for all the SB API headers.
|
||||
public_headers = os.listdir(public_api_dir)
|
||||
# For different platforms, the include statement can vary.
|
||||
if self.hasDarwinFramework():
|
||||
include_stmt = "'#include <%s>' % os.path.join('LLDB', header)"
|
||||
else:
|
||||
include_stmt = "'#include <%s>' % os.path.join(public_api_dir, header)"
|
||||
list = [eval(include_stmt) for header in public_headers if (
|
||||
header.startswith("SB") and header.endswith(".h"))]
|
||||
includes = '\n'.join(list)
|
||||
new_content = content.replace('%include_SB_APIs%', includes)
|
||||
src = os.path.join(os.getcwd(), source)
|
||||
with open(src, 'w') as f:
|
||||
f.write(new_content)
|
||||
|
||||
self.addTearDownHook(lambda: os.remove(src))
|
||||
|
||||
def setUp(self):
|
||||
#import traceback
|
||||
# traceback.print_stack()
|
||||
|
|
Loading…
Reference in New Issue