diff options
Diffstat (limited to 'lldb/test/lldbtest.py')
| -rw-r--r-- | lldb/test/lldbtest.py | 75 |
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) |

