Preparation for turning lldbsuite into a Python package.

The idea behind this patch is to expose the meat of
LLDB's Python infrastructure (test suite, scripts, etc)
as a single package.  This makes reusability and code
sharing among sub-packages easy.

Differential Revision: http://reviews.llvm.org/D14131

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@251460 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Zachary Turner 2015-10-27 22:33:47 +00:00
Родитель 74518eeb9c
Коммит 2c90860089
7 изменённых файлов: 92 добавлений и 3 удалений

Просмотреть файл

@ -0,0 +1,20 @@
# Module level initialization for the `lldbsuite` module.
import inspect
import os
import sys
def find_lldb_root():
lldb_root = os.path.dirname(inspect.getfile(inspect.currentframe()))
while True:
lldb_root = os.path.dirname(lldb_root)
if lldb_root is None:
return None
test_path = os.path.join(lldb_root, "lldb.root")
if os.path.isfile(test_path):
return lldb_root
return None
# lldbsuite.lldb_root refers to the root of the git/svn source checkout
lldb_root = find_lldb_root()

Просмотреть файл

@ -0,0 +1 @@
# Module level initialization for the `lldbsuite.test` module.

Просмотреть файл

@ -1205,7 +1205,7 @@ def adjust_inferior_options(dotest_argv):
# every dotest invocation from creating its own directory
import datetime
# The windows platforms don't like ':' in the pathname.
timestamp_started = datetime.datetime.now().strftime("%F-%H_%M_%S")
timestamp_started = datetime.datetime.now().strftime("%Y-%m-%d-%H_%M_%S")
dotest_argv.append('-s')
dotest_argv.append(timestamp_started)
dotest_options.s = timestamp_started

Просмотреть файл

@ -1048,6 +1048,8 @@ def setupSysPath():
# Set up the LLDB_SRC environment variable, so that the tests can locate
# the LLDB source code.
# When this changes over to a package instead of a standalone script, this
# will be `lldbsuite.lldb_root`
os.environ["LLDB_SRC"] = os.path.join(scriptPath, os.pardir)
pluginPath = os.path.join(scriptPath, 'plugins')
@ -1063,6 +1065,8 @@ def setupSysPath():
# to "import lldbgdbserverutils" from the lldb-server tests
# This is the root of the lldb git/svn checkout
# When this changes over to a package instead of a standalone script, this
# will be `lldbsuite.lldb_root`
lldbRootDirectory = os.path.abspath(os.path.join(scriptPath, os.pardir))
# Some of the tests can invoke the 'lldb' command directly.
@ -1294,6 +1298,7 @@ def visit(prefix, dir, names):
def disabledynamics():
import lldb
ci = lldb.DBG.GetCommandInterpreter()
res = lldb.SBCommandReturnObject()
ci.HandleCommand("setting set target.prefer-dynamic-value no-dynamic-values", res, False)
@ -1301,6 +1306,7 @@ def disabledynamics():
raise Exception('disabling dynamic type support failed')
def lldbLoggings():
import lldb
"""Check and do lldb loggings if necessary."""
# Turn on logging for debugging purposes if ${LLDB_LOG} environment variable is
@ -1366,6 +1372,7 @@ def checkDsymForUUIDIsNotOn():
sys.exit(0)
def exitTestSuite(exitCode = None):
import lldb
lldb.SBDebugger.Terminate()
if exitCode:
sys.exit(exitCode)
@ -1378,7 +1385,58 @@ def isMultiprocessTestRunner():
# test runner
return not (is_inferior_test_runner or no_multiprocess_test_runner)
if __name__ == "__main__":
def run_suite():
global just_do_benchmarks_test
global dont_do_dsym_test
global dont_do_dwarf_test
global dont_do_dwo_test
global blacklist
global blacklistConfig
global categoriesList
global validCategories
global useCategories
global skipCategories
global lldbFrameworkPath
global configFile
global archs
global compilers
global count
global dumpSysPath
global bmExecutable
global bmBreakpointSpec
global bmIterationCount
global failed
global failfast
global filters
global fs4all
global ignore
global progress_bar
global runHooks
global skip_build_and_cleanup
global skip_long_running_test
global noHeaders
global parsable
global regexp
global rdir
global sdir_name
global svn_silent
global verbose
global testdirs
global lldb_platform_name
global lldb_platform_url
global lldb_platform_working_dir
global setCrashInfoHook
global is_inferior_test_runner
global multiprocess_test_subdir
global num_threads
global output_on_success
global no_multiprocess_test_runner
global test_runner_name
global results_filename
global results_formatter_name
global results_formatter_options
global results_port
# On MacOS X, check to make sure that domain for com.apple.DebugSymbols defaults
# does not exist before proceeding to running the test suite.
if sys.platform.startswith("darwin"):
@ -1976,3 +2034,6 @@ if __name__ == "__main__":
# Exiting.
exitTestSuite(failed)
if __name__ == "__main__":
run_suite()

Просмотреть файл

@ -19,4 +19,4 @@ if lldb_root is not None:
import imp
module = imp.find_module("use_lldb_suite_root", [lldb_root])
if module is not None:
imp.load_module("use_lldb_suite_root", *module)
imp.load_module("use_lldb_suite_root", *module)

0
test/progress.py → third_party/Python/module/progress/progress.py поставляемый Executable file → Normal file
Просмотреть файл

Просмотреть файл

@ -11,5 +11,12 @@ def add_third_party_module_dirs(lldb_root):
for module_dir in module_dirs:
module_dir = os.path.join(third_party_modules_dir, module_dir)
sys.path.insert(0, module_dir)
def add_lldbsuite_packages_dir(lldb_root):
packages_dir = os.path.join(lldb_root, "packages", "Python")
sys.path.insert(0, packages_dir)
lldb_root = os.path.dirname(inspect.getfile(inspect.currentframe()))
add_third_party_module_dirs(lldb_root)
add_lldbsuite_packages_dir(lldb_root)