Patchwork [V2] tests: explicitly flush output streams

login
register
mail settings
Submitter Jun Wu
Date March 21, 2016, 1:03 a.m.
Message ID <645c7dedfcefc46f29c7.1458522204@x1c>
Download mbox | patch
Permalink /patch/14000/
State Accepted
Delegated to: Yuya Nishihara
Headers show

Comments

Jun Wu - March 21, 2016, 1:03 a.m.
# HG changeset patch
# User Jun Wu <quark@fb.com>
# Date 1458035502 0
#      Tue Mar 15 09:51:42 2016 +0000
# Node ID 645c7dedfcefc46f29c7eeb11165569ced56fec1
# Parent  83127a9fe76ea8b9379d9efa3afefff075b4f920
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.
Yuya Nishihara - March 23, 2016, 2:29 p.m.
On Sun, 20 Mar 2016 18:03:24 -0700, Jun Wu wrote:
> # HG changeset patch
> # User Jun Wu <quark@fb.com>
> # Date 1458035502 0
> #      Tue Mar 15 09:51:42 2016 +0000
> # Node ID 645c7dedfcefc46f29c7eeb11165569ced56fec1
> # Parent  83127a9fe76ea8b9379d9efa3afefff075b4f920
> tests: explicitly flush output streams

Queued this, thanks.

> 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

"sys" is unused. Removed.

>    > from mercurial import cmdutil
>    > from mercurial.i18n import _
>    > 
> @@ -935,7 +936,7 @@
>    >   opts['message'] = 'Test'
>    >   opts['logfile'] = None
>    >   cmdutil.amend(ui, repo, commitfunc, repo['.'], {}, pats, opts)
> -  >   print repo.changelog.headrevs()
> +  >   ui.write('%s\n' % repo.changelog.headrevs())

Patch

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):
@@ -194,9 +196,9 @@ 
   >     for rec in op.records['changegroup']:
   >         ui.write('addchangegroup return: %i\n' % rec['return'])
   >     if op.reply is not None and replypath is not None:
-  >         file = open(replypath, 'wb')
-  >         for chunk in op.reply.getchunks():
-  >             file.write(chunk)
+  >         with open(replypath, 'wb') as file:
+  >             for chunk in op.reply.getchunks():
+  >                 file.write(chunk)
   > 
   > @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 _
   > 
@@ -935,7 +936,7 @@ 
   >   opts['message'] = 'Test'
   >   opts['logfile'] = None
   >   cmdutil.amend(ui, repo, commitfunc, repo['.'], {}, pats, opts)
-  >   print repo.changelog.headrevs()
+  >   ui.write('%s\n' % repo.changelog.headrevs())
   > EOF
   $ cat >> $HGRCPATH << EOF
   > [extensions]