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:
Родитель
74518eeb9c
Коммит
2c90860089
|
@ -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
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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче