[Lldb-commits] [lldb] b53d44b - dotest.py: Add option to pass extra lldb settings to dotest
Adrian Prantl via lldb-commits
lldb-commits at lists.llvm.org
Tue Jan 14 12:35:34 PST 2020
Author: Adrian Prantl
Date: 2020-01-14T12:35:24-08:00
New Revision: b53d44b17a1685e405415cd32c4b6eb89cc4c3a1
URL: https://github.com/llvm/llvm-project/commit/b53d44b17a1685e405415cd32c4b6eb89cc4c3a1
DIFF: https://github.com/llvm/llvm-project/commit/b53d44b17a1685e405415cd32c4b6eb89cc4c3a1.diff
LOG: dotest.py: Add option to pass extra lldb settings to dotest
The primary motivation for this is to add another dimension to the
Swift LLDB test matrix, but this seems generally useful.
Differential Revision: https://reviews.llvm.org/D72662
Added:
Modified:
lldb/packages/Python/lldbsuite/test/configuration.py
lldb/packages/Python/lldbsuite/test/dotest.py
lldb/packages/Python/lldbsuite/test/dotest_args.py
Removed:
################################################################################
diff --git a/lldb/packages/Python/lldbsuite/test/configuration.py b/lldb/packages/Python/lldbsuite/test/configuration.py
index 0fc831d11730..09fc646f96ea 100644
--- a/lldb/packages/Python/lldbsuite/test/configuration.py
+++ b/lldb/packages/Python/lldbsuite/test/configuration.py
@@ -48,6 +48,10 @@
# The overriden dwarf verison.
dwarf_version = 0
+# Any overridden settings.
+# Always disable default dynamic types for testing purposes.
+settings = [('target.prefer-dynamic-value', 'no-dynamic-values')]
+
# Path to the FileCheck testing tool. Not optional.
filecheck = None
diff --git a/lldb/packages/Python/lldbsuite/test/dotest.py b/lldb/packages/Python/lldbsuite/test/dotest.py
index 46600559286a..560e47dc58de 100644
--- a/lldb/packages/Python/lldbsuite/test/dotest.py
+++ b/lldb/packages/Python/lldbsuite/test/dotest.py
@@ -343,6 +343,14 @@ def parseOptionsAndInitTestdirs():
# that explicitly require no debug info.
os.environ['CFLAGS'] = '-gdwarf-{}'.format(configuration.dwarf_version)
+ if args.settings:
+ for setting in args.settings:
+ if not len(setting) == 1 or not setting[0].count('='):
+ logging.error('"%s" is not a setting in the form "key=value"',
+ setting[0])
+ sys.exit(-1)
+ configuration.settings.append(setting[0].split('=', 1))
+
if args.d:
sys.stdout.write(
"Suspending the process %d to wait for debugger to attach...\n" %
@@ -765,17 +773,15 @@ def visit(prefix, dir, names):
raise
-def disabledynamics():
+def setSetting(setting, value):
import lldb
ci = lldb.DBG.GetCommandInterpreter()
res = lldb.SBCommandReturnObject()
- ci.HandleCommand(
- "setting set target.prefer-dynamic-value no-dynamic-values",
- res,
- False)
+ cmd = 'setting set %s %s'%(setting, value)
+ print(cmd)
+ ci.HandleCommand(cmd, res, False)
if not res.Succeeded():
- raise Exception('disabling dynamic type support failed')
-
+ raise Exception('failed to run "%s"'%cmd)
# ======================================== #
# #
@@ -1060,8 +1066,9 @@ def run_suite():
# Now that we have loaded all the test cases, run the whole test suite.
#
- # Disable default dynamic types for testing purposes
- disabledynamics()
+ # Set any user-overridden settings.
+ for key, value in configuration.settings:
+ setSetting(key, value)
# Install the control-c handler.
unittest2.signals.installHandler()
diff --git a/lldb/packages/Python/lldbsuite/test/dotest_args.py b/lldb/packages/Python/lldbsuite/test/dotest_args.py
index 41c96e3979cd..7ec5fa2a78e4 100644
--- a/lldb/packages/Python/lldbsuite/test/dotest_args.py
+++ b/lldb/packages/Python/lldbsuite/test/dotest_args.py
@@ -115,6 +115,14 @@ def create_parser():
dest='dwarf_version',
type=int,
help='Override the DWARF version.')
+ group.add_argument(
+ '--setting',
+ metavar='SETTING=VALUE',
+ dest='settings',
+ type=str,
+ nargs=1,
+ action='append',
+ help='Run "setting set SETTING VALUE" before executing any test.')
group.add_argument(
'-s',
metavar='name',
More information about the lldb-commits
mailing list