[lldb/Test] Add `use_colors` argument to the PExpect.launch wrapper
authorMed Ismail Bennani <medismail.bennani@gmail.com>
Wed, 18 May 2022 18:35:20 +0000 (11:35 -0700)
committerMed Ismail Bennani <medismail.bennani@gmail.com>
Thu, 19 May 2022 01:22:46 +0000 (18:22 -0700)
This patch adds a new `use_colors` argument to the PExpect.launch
method.

As the name suggests, it allows the user to conditionally enable color
support in the debugger, which can be helpful to test functionalities that
rely on that, like progress reporting. It defaults to False.

Differential Revision: https://reviews.llvm.org/D125915

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
lldb/packages/Python/lldbsuite/test/lldbpexpect.py

index de8f819..fe44c86 100644 (file)
@@ -24,16 +24,20 @@ class PExpectTest(TestBase):
         self.child.expect_exact(self.PROMPT)
 
     def launch(self, executable=None, extra_args=None, timeout=60,
-               dimensions=None, run_under=None, post_spawn=None):
+               dimensions=None, run_under=None, post_spawn=None,
+               use_colors=False):
         logfile = getattr(sys.stdout, 'buffer',
                             sys.stdout) if self.TraceOn() else None
 
         args = []
         if run_under is not None:
             args += run_under
-        args += [lldbtest_config.lldbExec, '--no-lldbinit', '--no-use-colors']
+        args += [lldbtest_config.lldbExec, '--no-lldbinit']
+        if not use_colors:
+            args += '--no-use-colors'
         for cmd in self.setUpCommands():
-            args += ['-O', cmd]
+            if use_colors and "use-color false" not in cmd:
+                args += ['-O', cmd]
         if executable is not None:
             args += ['--file', executable]
         if extra_args is not None:
@@ -54,8 +58,9 @@ class PExpectTest(TestBase):
             post_spawn()
         self.expect_prompt()
         for cmd in self.setUpCommands():
-            self.child.expect_exact(cmd)
-            self.expect_prompt()
+            if use_colors and "use-color false" not in cmd:
+                self.child.expect_exact(cmd)
+                self.expect_prompt()
         if executable is not None:
             self.child.expect_exact("target create")
             self.child.expect_exact("Current executable set to")