[PATCH 1 of 5] tests: explicitly flush output streams
Yuya Nishihara
yuya at tcha.org
Thu Mar 17 09:59:49 EDT 2016
On Tue, 15 Mar 2016 09:58:32 +0000, Jun Wu wrote:
> # HG changeset patch
> # User Jun Wu <quark at fb.com>
> # Date 1458035502 0
> # Tue Mar 15 09:51:42 2016 +0000
> # Node ID 7d543ffcd496456bb8c12b3755155250e969d688
> # Parent a51d7eb2e998920b2f4c4f7114cb8450df05ec44
> tests: explicitly flush output streams
>
> Some tests fail while running with chg because they do not flush their output
> streams. chgserver will make sure ui.flush is called after dispatch, but not
> after {ui,repo}setup. For other non-ui streams, it should be explicitly
> flushed since the request handler will use os._exit.
> This patch adds explicit flushes in test-bundle2-format.t, test-extension.t
> and test-obsolete.t. It will fix most test cases of them when running with chg.
>
> diff --git a/tests/test-bundle2-format.t b/tests/test-bundle2-format.t
> --- a/tests/test-bundle2-format.t
> +++ b/tests/test-bundle2-format.t
> @@ -166,6 +166,8 @@
> > file.write(chunk)
> > except RuntimeError, exc:
> > raise error.Abort(exc)
> + > finally:
> + > file.flush()
> >
> > @command('unbundle2', [], '')
> > def cmdunbundle2(ui, repo, replypath=None):
> @@ -197,6 +199,7 @@
> > file = open(replypath, 'wb')
> > for chunk in op.reply.getchunks():
> > file.write(chunk)
> + > file.flush()
These two should be file.close(). cmdutil.makefileobj() might be useful.
> --- a/tests/test-extension.t
> +++ b/tests/test-extension.t
> @@ -7,9 +7,11 @@
> > command = cmdutil.command(cmdtable)
> > def uisetup(ui):
> > ui.write("uisetup called\\n")
> + > ui.flush()
> > def reposetup(ui, repo):
> > ui.write("reposetup called for %s\\n" % os.path.basename(repo.root))
> > ui.write("ui %s= repo.ui\\n" % (ui == repo.ui and "=" or "!"))
> + > ui.flush()
> > @command('foo', [], 'hg foo')
> > def foo(ui, *args, **kwargs):
> > ui.write("Foo\\n")
> @@ -183,6 +185,7 @@
> > import foo
> > def extsetup(ui):
> > ui.write('(extroot) ', foo.func(), '\n')
> + > ui.flush()
> > EOF
>
> $ cat > $TESTTMP/extroot/foo.py <<EOF
> @@ -1077,6 +1080,7 @@
> > from mercurial import extensions
> > def reposetup(ui, repo):
> > ui.write('reposetup() for %s\n' % (repo.root))
> + > ui.flush()
These looks good.
> diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t
> --- a/tests/test-obsolete.t
> +++ b/tests/test-obsolete.t
> @@ -923,6 +923,7 @@
> Test heads computation on pending index changes with obsolescence markers
> $ cd ..
> $ cat >$TESTTMP/test_extension.py << EOF
> + > import sys
> > from mercurial import cmdutil
> > from mercurial.i18n import _
> >
> @@ -936,6 +937,7 @@
> > opts['logfile'] = None
> > cmdutil.amend(ui, repo, commitfunc, repo['.'], {}, pats, opts)
> > print repo.changelog.headrevs()
> + > sys.stdout.flush()
Perhaps we should use ui.write() ?
More information about the Mercurial-devel
mailing list