diff tests/run-tests.py @ 28317:8de70574be2c

run-tests: defer leftover (?) cleanup until after all output is exhausted Previously, after matching a single line, any contiguous subsequent lines ending with (?) would be added to the output and removed from the expected output. This is a problem if the subsequent test output would have matched the consumed (?) line, because it kept the optional line and then added a duplicate without the (?) [1]. Instead, wait until there is nothing more to match before handling the leftovers. [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2016-February/080197.html
author Matt Harbison <matt_harbison@yahoo.com>
date Sun, 28 Feb 2016 23:21:28 -0500
parents 0fe00bdb2f4f
children 98a1a9547bb1
line wrap: on
line diff
--- a/tests/run-tests.py	Sun Feb 28 23:16:30 2016 -0500
+++ b/tests/run-tests.py	Sun Feb 28 23:21:28 2016 -0500
@@ -1138,14 +1138,13 @@
                     elif warnonly == 1: # Is "not yet" and line is warn only.
                         warnonly = 2 # Yes do warn.
                 break
-
-            # clean up any optional leftovers
-            while expected.get(pos, None):
-                el = expected[pos].pop(0)
-                if not el.endswith(b" (?)\n"):
-                    expected[pos].insert(0, el)
-                    break
-                postout.append(b'  ' + el)
+            else:
+                # clean up any optional leftovers
+                while expected.get(pos, None):
+                    el = expected[pos].pop(0)
+                    if el and not el.endswith(b" (?)\n"):
+                        break
+                    postout.append(b'  ' + el)
 
             if lcmd:
                 # Add on last return code.