[PATCH] ui: disable echo back of prompt input if ui is set to non-tty purposely

Augie Fackler raf at durin42.com
Thu Oct 9 09:05:20 CDT 2014


On Wed, Oct 08, 2014 at 11:48:53PM +0900, Yuya Nishihara wrote:
> # HG changeset patch
> # User Yuya Nishihara <yuya at tcha.org>
> # Date 1412769061 -32400
> #      Wed Oct 08 20:51:01 2014 +0900
> # Node ID 49193989bbd88445b156f0c6891610f34a56447f
> # Parent  a1eb21f5caea4366310e32aa85248791d5bbfa0c
> ui: disable echo back of prompt input if ui is set to non-tty purposely
>
> 9ab18a912c44 is nice for test output, but it also affects command-server
> channel.  Command-server client shouldn't receive echo-back message, which
> makes it harder to parse the output.
>
> diff --git a/mercurial/ui.py b/mercurial/ui.py
> --- a/mercurial/ui.py
> +++ b/mercurial/ui.py
> @@ -684,7 +684,9 @@ class ui(object):
>                  r = default
>              # sometimes self.interactive disagrees with isatty,
>              # show response provided on stdin when simulating
> -            if not util.isatty(self.fin):
> +            # but commandserver

Should there be more of a thought here? Or is "but" a typo?

> +            if (not util.isatty(self.fin)
> +                and not self.configbool('ui', 'nontty')):
>                  self.write(r, "\n")
>              return r
>          except EOFError:
> diff --git a/tests/test-commandserver.t b/tests/test-commandserver.t
> --- a/tests/test-commandserver.t
> +++ b/tests/test-commandserver.t
> @@ -497,6 +497,9 @@ check that local configs for the cached
>    > @command("debuggetpass", norepo=True)
>    > def debuggetpass(ui):
>    >     ui.write("%s\\n" % ui.getpass())
> +  > @command("debugprompt", norepo=True)
> +  > def debugprompt(ui):
> +  >     ui.write("%s\\n" % ui.prompt("prompt:"))
>    > EOF
>    $ cat <<EOF >> .hg/hgrc
>    > [extensions]
> @@ -511,8 +514,13 @@ check that local configs for the cached
>    ...     runcommand(server, ['debuggetpass', '--config',
>    ...                         'ui.interactive=True'],
>    ...                input=cStringIO.StringIO('1234\n'))
> +  ...     runcommand(server, ['debugprompt', '--config',
> +  ...                         'ui.interactive=True'],
> +  ...                input=cStringIO.StringIO('5678\n'))
>    *** runcommand debuggetpass --config ui.interactive=True
>    password: 1234
> +  *** runcommand debugprompt --config ui.interactive=True
> +  prompt: 5678
>
>
>  start without repository:
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list