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

Gregory Szorc gregory.szorc at gmail.com
Mon Feb 29 16:04:46 EST 2016


Thank you for tracking this down!

> On Feb 28, 2016, at 22:14, Matt Harbison <mharbison72 at gmail.com> 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
> +                    postout.append(b'  ' + el)
> 
>             if lcmd:
>                 # Add on last return code.
> 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
> @@ -52,6 +52,12 @@
>>  never happens (?)
>>  xyzzy
>>  nor this (?)
> +  >   $ printf 'abc\ndef\nxyz\n'
> +  >   123 (?)
> +  >   abc
> +  >   def (?)
> +  >   456 (?)
> +  >   xyz
>> EOF
> 
>   $ rt
> @@ -286,6 +292,12 @@
>   xyzzy
>   + echo *SALT* 6 0 (glob)
>   *SALT* 6 0 (glob)
> +  + printf 'abc\ndef\nxyz\n'
> +  abc
> +  def
> +  xyz
> +  + echo *SALT* 12 0 (glob)
> +  *SALT* 12 0 (glob)
>   .
>   # Ran 2 tests, 0 skipped, 0 warned, 0 failed.
> 
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list