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.
--- 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'