summaryrefslogtreecommitdiffstats
path: root/lldb/test/lldbtest.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/test/lldbtest.py')
-rw-r--r--lldb/test/lldbtest.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/lldb/test/lldbtest.py b/lldb/test/lldbtest.py
new file mode 100644
index 00000000000..0596757c05b
--- /dev/null
+++ b/lldb/test/lldbtest.py
@@ -0,0 +1,75 @@
+"""
+LLDB module which provides the abstract base class of lldb test case.
+
+The concrete subclass can override lldbtest.TesBase in order to inherit the
+common behavior for unitest.TestCase.setUp/tearDown implemented in this file.
+
+The subclass should override the attribute mydir in order for the python runtime
+to locate the individual test cases when running as part of a large test suite
+or when running each test case as a separate python invocation.
+
+./dotest.py provides a test driver which sets up the environment to run the
+entire test suite. Users who want to run a test case on its own can specify the
+LLDB_TEST and PYTHONPATH environment variables, for example:
+
+$ export LLDB_TEST=$PWD
+$ export PYTHONPATH=/Volumes/data/lldb/svn/trunk/build/Debug/LLDB.framework/Resources/Python:$LLDB_TEST
+$ echo $LLDB_TEST
+/Volumes/data/lldb/svn/trunk/test
+$ echo $PYTHONPATH
+/Volumes/data/lldb/svn/trunk/build/Debug/LLDB.framework/Resources/Python:/Volumes/data/lldb/svn/trunk/test
+$ python function_types/TestFunctionTypes.py
+.
+----------------------------------------------------------------------
+Ran 1 test in 0.363s
+
+OK
+$
+"""
+
+import os
+import unittest
+import lldb
+
+class TestBase(unittest.TestCase):
+ """This LLDB abstract base class is meant to be subclassed."""
+
+ # The concrete subclass should override this attribute.
+ mydir = ""
+
+ def setUp(self):
+ # Save old working directory.
+ self.oldcwd = os.getcwd()
+
+ # Change current working directory if ${LLDB_TEST} is defined.
+ # See also dotest.py which sets up ${LLDB_TEST}.
+ if ("LLDB_TEST" in os.environ):
+ os.chdir(os.path.join(os.environ["LLDB_TEST"], self.mydir));
+
+ # Create the debugger instance if necessary.
+ try:
+ self.dbg = lldb.DBG
+ except NameError:
+ self.dbg = lldb.SBDebugger.Create()
+ except AttributeError:
+ self.dbg = lldb.SBDebugger.Create()
+ if not self.dbg.IsValid():
+ raise Exception('Invalid debugger instance')
+
+ # We want our debugger to be synchronous.
+ self.dbg.SetAsync(False)
+
+ # Retrieve the associated command interpreter instance.
+ self.ci = self.dbg.GetCommandInterpreter()
+ if not self.ci:
+ raise Exception('Could not get the command interpreter')
+
+ # And the result object.
+ self.res = lldb.SBCommandReturnObject()
+
+
+ def tearDown(self):
+ del self.dbg
+
+ # Restore old working directory.
+ os.chdir(self.oldcwd)
OpenPOWER on IntegriCloud