[Test Suite] Pull generateSource into lldbtest
authorChris Bieneman <beanz@apple.com>
Thu, 27 Oct 2016 22:52:32 +0000 (22:52 +0000)
committerChris Bieneman <beanz@apple.com>
Thu, 27 Oct 2016 22:52:32 +0000 (22:52 +0000)
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: 285357

12 files changed:
lldb/packages/Python/lldbsuite/test/api/check_public_api_headers/TestPublicAPIHeaders.py
lldb/packages/Python/lldbsuite/test/api/multithreaded/TestMultithreaded.py
lldb/packages/Python/lldbsuite/test/api/multithreaded/driver.cpp.template [moved from lldb/packages/Python/lldbsuite/test/api/multithreaded/driver.cpp with 96% similarity]
lldb/packages/Python/lldbsuite/test/api/multithreaded/listener_test.cpp.template [moved from lldb/packages/Python/lldbsuite/test/api/multithreaded/listener_test.cpp with 98% similarity]
lldb/packages/Python/lldbsuite/test/api/multithreaded/lldb-headers.h [deleted file]
lldb/packages/Python/lldbsuite/test/api/multithreaded/test_breakpoint_callback.cpp.template [moved from lldb/packages/Python/lldbsuite/test/api/multithreaded/test_breakpoint_callback.cpp with 98% similarity]
lldb/packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_description.cpp.template [moved from lldb/packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_description.cpp with 98% similarity]
lldb/packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp.template [moved from lldb/packages/Python/lldbsuite/test/api/multithreaded/test_listener_event_process_state.cpp with 98% similarity]
lldb/packages/Python/lldbsuite/test/api/multithreaded/test_listener_resume.cpp.template [moved from lldb/packages/Python/lldbsuite/test/api/multithreaded/test_listener_resume.cpp with 98% similarity]
lldb/packages/Python/lldbsuite/test/functionalities/plugins/commands/TestPluginCommands.py
lldb/packages/Python/lldbsuite/test/functionalities/plugins/commands/plugin.cpp.template [moved from lldb/packages/Python/lldbsuite/test/functionalities/plugins/commands/plugin.cpp with 85% similarity]
lldb/packages/Python/lldbsuite/test/lldbtest.py

index 0b202a0..dd6dbe0 100644 (file)
@@ -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)
index 970c251..abd252b 100644 (file)
@@ -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
diff --git a/lldb/packages/Python/lldbsuite/test/api/multithreaded/lldb-headers.h b/lldb/packages/Python/lldbsuite/test/api/multithreaded/lldb-headers.h
deleted file mode 100644 (file)
index da0914b..0000000
+++ /dev/null
@@ -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
index 9341ff9..18fcc41 100644 (file)
@@ -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
index a79e06f..2c5cd2e 100644 (file)
@@ -1824,6 +1824,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()