run-tests: make _processoutput picky about optional globs
authortimeless <timeless@mozdev.org>
Wed, 30 Mar 2016 09:13:47 +0000
changeset 28701 3bce3d2fd727
parent 28700 35ad5bcdeb7e
child 28702 e44f671018e3
run-tests: make _processoutput picky about optional globs 1ad0ddf8cccc enabled lines that were not matched to be found later in cases of jitter. Unfortunately, in this model an optional line would always jitter to the end when it is not present. That is not ideal. It would be possible to do better, by queuing all writes until the end in case an optional line jitters, but for now, it is simpler to assume optional lines have a fixed place in the stream.
tests/run-tests.py
tests/test-run-tests.t
--- a/tests/run-tests.py	Wed Mar 30 07:24:51 2016 +0000
+++ b/tests/run-tests.py	Wed Mar 30 09:13:47 2016 +0000
@@ -1160,6 +1160,7 @@
                     els = expected[pos]
 
                 i = 0
+                optional = []
                 while i < len(els):
                     el = els[i]
 
@@ -1181,11 +1182,18 @@
                     if r:
                         els.pop(i)
                         break
+                    if el and el.endswith(b" (?)\n"):
+                        optional.append(i)
                     i += 1
 
                 if r:
                     if r == "retry":
                         continue
+                    # clean up any optional leftovers
+                    for i in optional:
+                        postout.append(b'  ' + els[i])
+                    for i in reversed(optional):
+                        del els[i]
                     postout.append(b'  ' + el)
                 else:
                     if self.NEEDESCAPE(lout):
--- a/tests/test-run-tests.t	Wed Mar 30 07:24:51 2016 +0000
+++ b/tests/test-run-tests.t	Wed Mar 30 09:13:47 2016 +0000
@@ -49,7 +49,7 @@
   >   $ echo babar
   >   babar
   >   $ echo xyzzy
-  >   never happens (?)
+  >   never*happens (glob) (?)
   >   xyzzy
   >   nor this (?)
   >   $ printf 'abc\ndef\nxyz\n'