[PATCH] run-tests: make _processoutput picky about optional globs

timeless timeless at mozdev.org
Wed Mar 30 05:15:31 EDT 2016


# HG changeset patch
# User timeless <timeless at mozdev.org>
# Date 1459329227 0
#      Wed Mar 30 09:13:47 2016 +0000
# Node ID d4280e641958915deba5d724faf8304925db69c6
# Parent  ff0d3b6b287f89594bd8d0308fe2810d2a18ea01
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.

diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -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):
diff --git a/tests/test-run-tests.t b/tests/test-run-tests.t
--- a/tests/test-run-tests.t
+++ b/tests/test-run-tests.t
@@ -49,7 +49,7 @@
   >   $ echo babar
   >   babar
   >   $ echo xyzzy
-  >   never happens (?)
+  >   never*happens (glob) (?)
   >   xyzzy
   >   nor this (?)
   >   $ printf 'abc\ndef\nxyz\n'


More information about the Mercurial-devel mailing list