[PATCH 2 of 3] run-tests: defer leftover (?) cleanup until after all output is exhausted

Yuya Nishihara yuya at tcha.org
Tue Mar 1 15:49:39 UTC 2016


On Mon, 29 Feb 2016 01:14:28 -0500, Matt Harbison wrote:
> # HG changeset patch
> # User Matt Harbison <matt_harbison at yahoo.com>
> # Date 1456719688 18000
> #      Sun Feb 28 23:21:28 2016 -0500
> # Node ID 7afd6d67701e7057883895324647facd50ff8db8
> # Parent  ceb7ce2df958755ffc5c9f0c98d13de991f6b192
> 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
> 
> diff --git a/tests/run-tests.py b/tests/run-tests.py
> --- a/tests/run-tests.py
> +++ b/tests/run-tests.py
> @@ -1137,14 +1137,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

Noob question: can we drop unmatched "el" here? Previously we did push back it.

> +  + printf 'abc\ndef\nxyz\n'

With Debian dash, quotes are removed.

   *SALT* 6 0 (glob)
-  + printf 'abc\ndef\nxyz\n'
+  + printf abc\ndef\nxyz\n
   abc

Other than that, the series looks good to me.


More information about the Mercurial-devel mailing list