Index: packages/Python/lldbsuite/test/api/check_public_api_headers/TestPublicAPIHeaders.py =================================================================== --- packages/Python/lldbsuite/test/api/check_public_api_headers/TestPublicAPIHeaders.py +++ packages/Python/lldbsuite/test/api/check_public_api_headers/TestPublicAPIHeaders.py @@ -19,9 +19,9 @@ 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 @@ 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) Index: packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py =================================================================== --- packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py +++ packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py @@ -15,6 +15,15 @@ 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 Index: packages/Python/lldbsuite/test/api/multithreaded/driver.cpp.template =================================================================== --- packages/Python/lldbsuite/test/api/multithreaded/driver.cpp.template +++ packages/Python/lldbsuite/test/api/multithreaded/driver.cpp.template @@ -7,7 +7,7 @@ #include #include -#include "lldb-headers.h" +%include_SB_APIs% #include "common.h" Index: packages/Python/lldbsuite/test/api/multithreaded/listener_test.cpp.template =================================================================== --- packages/Python/lldbsuite/test/api/multithreaded/listener_test.cpp.template +++ packages/Python/lldbsuite/test/api/multithreaded/listener_test.cpp.template @@ -7,7 +7,7 @@ #include #include -#include "lldb-headers.h" +%include_SB_APIs% #include "common.h" using namespace lldb; Index: packages/Python/lldbsuite/test/api/multithreaded/lldb-headers.h =================================================================== --- packages/Python/lldbsuite/test/api/multithreaded/lldb-headers.h +++ /dev/null @@ -1,11 +0,0 @@ - -#ifndef LLDB_HEADERS_H -#define LLDB_HEADERS_H - -#ifdef __APPLE__ -#include -#else -#include "lldb/API/LLDB.h" -#endif - -#endif // LLDB_HEADERS_H Index: packages/Python/lldbsuite/test/api/multithreaded/test_breakpoint_callback.cpp.template =================================================================== --- packages/Python/lldbsuite/test/api/multithreaded/test_breakpoint_callback.cpp.template +++ packages/Python/lldbsuite/test/api/multithreaded/test_breakpoint_callback.cpp.template @@ -7,7 +7,7 @@ #include #include -#include "lldb-headers.h" +%include_SB_APIs% #include "common.h" Index: packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_description.cpp.template =================================================================== --- packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_description.cpp.template +++ packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_description.cpp.template @@ -8,7 +8,7 @@ #include #include -#include "lldb-headers.h" +%include_SB_APIs% #include "common.h" Index: packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp.template =================================================================== --- packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp.template +++ packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp.template @@ -8,7 +8,7 @@ #include #include -#include "lldb-headers.h" +%include_SB_APIs% #include "common.h" Index: packages/Python/lldbsuite/test/api/multithreaded/test_listener_resume.cpp.template =================================================================== --- packages/Python/lldbsuite/test/api/multithreaded/test_listener_resume.cpp.template +++ packages/Python/lldbsuite/test/api/multithreaded/test_listener_resume.cpp.template @@ -8,7 +8,7 @@ #include #include -#include "lldb-headers.h" +%include_SB_APIs% #include "common.h" Index: packages/Python/lldbsuite/test/functionalities/plugins/commands/TestPluginCommands.py =================================================================== --- packages/Python/lldbsuite/test/functionalities/plugins/commands/TestPluginCommands.py +++ packages/Python/lldbsuite/test/functionalities/plugins/commands/TestPluginCommands.py @@ -18,6 +18,10 @@ 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. Index: packages/Python/lldbsuite/test/functionalities/plugins/commands/plugin.cpp.template =================================================================== --- packages/Python/lldbsuite/test/functionalities/plugins/commands/plugin.cpp.template +++ packages/Python/lldbsuite/test/functionalities/plugins/commands/plugin.cpp.template @@ -13,15 +13,7 @@ by typing plugin load foo.dylib at the LLDB command line */ -#if defined (__APPLE__) -#include -#include -#include -#else -#include -#include -#include -#endif +%include_SB_APIs% namespace lldb { bool Index: packages/Python/lldbsuite/test/lldbtest.py =================================================================== --- packages/Python/lldbsuite/test/lldbtest.py +++ packages/Python/lldbsuite/test/lldbtest.py @@ -1824,6 +1824,33 @@ 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()