[Lldb-commits] [PATCH] D73766: [RFC] Make substrs argument to self.expect ordered by default.

Jonas Devlieghere via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Thu Jan 30 22:34:42 PST 2020


JDevlieghere created this revision.
JDevlieghere added a reviewer: LLDB.
Herald added a project: LLDB.

This patch is more of an RFC to change the default behavior of the `substrs` argument to `self.expect`. Currently, the elements of `substrs` are unordered and as long as the string appears in the output, the assertion passes. I think we can be more precise by requiring that the substrings be ordered in the way they appear. My hope is that this will make it harder to accidentally pass a check because a string appears out of order.

A possible alternative is to keep the option but have it off by default. Currently there's about 50 tests failing because of this. If we like to move forward with making this the default I plan to incrementally update tests before flipping the switch.


Repository:
  rLLDB LLDB

https://reviews.llvm.org/D73766

Files:
  lldb/packages/Python/lldbsuite/test/functionalities/mtc/simple/TestMTCSimple.py
  lldb/packages/Python/lldbsuite/test/lldbtest.py


Index: lldb/packages/Python/lldbsuite/test/lldbtest.py
===================================================================
--- lldb/packages/Python/lldbsuite/test/lldbtest.py
+++ lldb/packages/Python/lldbsuite/test/lldbtest.py
@@ -2261,6 +2261,7 @@
             substrs=None,
             trace=False,
             error=False,
+            ordered=True,
             matching=True,
             exe=True,
             inHistory=False):
@@ -2341,8 +2342,12 @@
         # Look for sub strings, if specified.
         keepgoing = matched if matching else not matched
         if substrs and keepgoing:
+            start = 0
             for substr in substrs:
-                matched = output.find(substr) != -1
+                index = output[start:].find(substr)
+                print("Looking for %s in %s" % (substr, output[start:]))
+                start = start + index if ordered and matching else 0
+                matched = index != -1
                 with recording(self, trace) as sbuf:
                     print("%s sub string: %s" % (heading, substr), file=sbuf)
                     print("Matched" if matched else "Not matched", file=sbuf)
Index: lldb/packages/Python/lldbsuite/test/functionalities/mtc/simple/TestMTCSimple.py
===================================================================
--- lldb/packages/Python/lldbsuite/test/functionalities/mtc/simple/TestMTCSimple.py
+++ lldb/packages/Python/lldbsuite/test/functionalities/mtc/simple/TestMTCSimple.py
@@ -46,7 +46,7 @@
 
         self.expect(
             "thread info -s",
-            substrs=["instrumentation_class", "api_name", "class_name", "selector", "description"])
+            substrs=["api_name", "class_name", "description", "instrumentation_class", "selector"])
         self.assertEqual(thread.GetStopReason(), lldb.eStopReasonInstrumentation)
         output_lines = self.res.GetOutput().split('\n')
         json_line = '\n'.join(output_lines[2:])


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D73766.241636.patch
Type: text/x-patch
Size: 1947 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20200131/9cabff41/attachment.bin>


More information about the lldb-commits mailing list