Mercurial > hg-stable
changeset 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 | c0cecc153d25 |
children | 564a354f7f35 |
files | tests/run-tests.py tests/test-run-tests.t |
diffstat | 2 files changed, 19 insertions(+), 8 deletions(-) [+] |
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.
--- a/tests/test-run-tests.t Sun Feb 28 23:16:30 2016 -0500 +++ b/tests/test-run-tests.t Sun Feb 28 23:21:28 2016 -0500 @@ -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* (glob) + abc + def + xyz + + echo *SALT* 12 0 (glob) + *SALT* 12 0 (glob) . # Ran 2 tests, 0 skipped, 0 warned, 0 failed.