Mercurial > hg
changeset 36841:9c636ec1ef37
hook: ensure stderr is flushed when an exception is raised, for test stability
Windows has had issues with output order in test-ssh-proto-unbundle.t[1] since
it was created a few weeks ago. Each of the problems occurred when an exception
was thrown out of the hook.
Now the only thing blocking D2720 is the fact that the "abort: ..." lines on
stderr are totally AWOL. I have no idea where there are.
[1] https://buildbot.mercurial-scm.org/builders/Win7%20x86_64%20hg%20tests/builds/541/steps/run-tests.py%20%28python%202.7.13%29/logs/stdio
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 10 Mar 2018 22:02:58 -0500 |
parents | ef68493d652b |
children | ff541b8cdee0 |
files | mercurial/hook.py |
diffstat | 1 files changed, 5 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/hook.py Sat Mar 10 10:27:56 2018 -0800 +++ b/mercurial/hook.py Sat Mar 10 22:02:58 2018 -0500 @@ -265,12 +265,12 @@ raised = False res[hname] = r, raised + finally: + # The stderr is fully buffered on Windows when connected to a pipe. + # A forcible flush is required to make small stderr data in the + # remote side available to the client immediately. + util.stderr.flush() - # The stderr is fully buffered on Windows when connected to a pipe. - # A forcible flush is required to make small stderr data in the - # remote side available to the client immediately. - util.stderr.flush() - finally: if _redirect and oldstdout >= 0: util.stdout.flush() # write hook output to stderr fd os.dup2(oldstdout, stdoutno)