[PATCH 2 of 3] run-tests: defer leftover (?) cleanup until after all output is exhausted
Gregory Szorc
gregory.szorc at gmail.com
Tue Mar 1 02:39:05 UTC 2016
On Mon, Feb 29, 2016 at 5:47 PM, Matt Harbison <mharbison72 at gmail.com>
wrote:
> On Mon, 29 Feb 2016 16:04:46 -0500, Gregory Szorc <gregory.szorc at gmail.com>
> wrote:
>
> Thank you for tracking this down!
>>
>
> No problem. The volume of test failures kinda forced my hand on this :-)
>
> Was this the problem you alluded to in the other thread, or was that
> something else?
I /think/ it is the same problem.
>
>
> 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
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20160229/2c88f6f5/attachment.html>
More information about the Mercurial-devel
mailing list