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

Yuya Nishihara yuya at tcha.org
Wed Mar 2 08:15:57 EST 2016


On Tue, 01 Mar 2016 22:14:32 -0500, Matt Harbison wrote:
> On Tue, 01 Mar 2016 10:49:39 -0500, Yuya Nishihara <yuya at tcha.org> wrote:
> > On Mon, 29 Feb 2016 01:14:28 -0500, Matt Harbison wrote:
> >> --- 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.
> 
> I think it is OK, but I don't have a good understanding of this myself.  I  
> can't get it to fail with this code + push back, or the old code without  
> it.  So it's not clear what purpose it served.
> 
> It appears that 'expected' is a dict of lists, and each list is lines of  
> expected output for one command in the test.  After this loop, the 'pos'  
> value is modified, so the current list is not examined again, unless lcmd  
> is None somehow.

Seems legit to drop insert(). Queued this version, thanks.

> I can put it back if you want, since it doesn't seem to affect anything  
> one way or the other.
> 
> >> +  + 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
> 
> Is dash happy with it globbed away?  It doesn't print correctly (on
> Windows anyway) without quoting of some kind.

Sure, (glob) is processed by the test runner. I've changed that line as follows:

  + printf *abc\ndef\nxyz\n* (glob)


More information about the Mercurial-devel mailing list