[Lldb-commits] [PATCH] D72662: dotest.py: Add option to pass extra lldb settings to dotest

Adrian Prantl via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Mon Jan 13 15:44:59 PST 2020


aprantl created this revision.
aprantl added reviewers: JDevlieghere, labath.
aprantl added a project: LLDB.

The primary motivation for this is to add another dimension to the Swift LLDB test matrix, but this seems generally useful.


https://reviews.llvm.org/D72662

Files:
  lldb/packages/Python/lldbsuite/test/configuration.py
  lldb/packages/Python/lldbsuite/test/dotest.py
  lldb/packages/Python/lldbsuite/test/dotest_args.py


Index: lldb/packages/Python/lldbsuite/test/dotest_args.py
===================================================================
--- lldb/packages/Python/lldbsuite/test/dotest_args.py
+++ lldb/packages/Python/lldbsuite/test/dotest_args.py
@@ -115,6 +115,14 @@
         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',
Index: lldb/packages/Python/lldbsuite/test/dotest.py
===================================================================
--- lldb/packages/Python/lldbsuite/test/dotest.py
+++ lldb/packages/Python/lldbsuite/test/dotest.py
@@ -343,6 +343,14 @@
         # 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,16 +773,18 @@
             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)
+
+def disabledynamics():
+    setSetting('target.prefer-dynamic-value', 'no-dynamic-values')
 
 
 # ======================================== #
@@ -1063,6 +1073,10 @@
     # 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()
 
Index: lldb/packages/Python/lldbsuite/test/configuration.py
===================================================================
--- lldb/packages/Python/lldbsuite/test/configuration.py
+++ lldb/packages/Python/lldbsuite/test/configuration.py
@@ -48,6 +48,9 @@
 # The overriden dwarf verison.
 dwarf_version = 0
 
+# Any overridden settings.
+settings = []
+
 # Path to the FileCheck testing tool. Not optional.
 filecheck = None
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D72662.237803.patch
Type: text/x-patch
Size: 2971 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20200113/5f0a54c4/attachment.bin>


More information about the lldb-commits mailing list