[PATCH 1 of 5] tests: explicitly flush output streams

Jun Wu quark at fb.com
Tue Mar 15 05:58:32 EDT 2016


# 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()
   > 
   > @command('statbundle2', [], '')
   > def cmdstatbundle2(ui, repo):
diff --git a/tests/test-extension.t b/tests/test-extension.t
--- 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()
   > EOF
   $ hg init src
   $ echo a > src/a
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()
   > EOF
   $ cat >> $HGRCPATH << EOF
   > [extensions]


More information about the Mercurial-devel mailing list