From patchwork Mon Oct 20 15:15:48 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [2, of, 2, STABLE] ui: enable echo back of prompt response only in tests (issue4417) From: Yuya Nishihara X-Patchwork-Id: 6430 Message-Id: To: mercurial-devel@selenic.com Date: Tue, 21 Oct 2014 00:15:48 +0900 # HG changeset patch # User Yuya Nishihara # Date 1413694842 -32400 # Sun Oct 19 14:00:42 2014 +0900 # Branch stable # Node ID c5b0405c9f23896ad4440899836f13a18e9d9390 # Parent 7ce8b804b319af65322c0ab345f21d289f92c63f ui: enable echo back of prompt response only in tests (issue4417) 9ab18a912c44 isn't always good. Some tools will want to see the prompt choice: $ yes | hg xxx > output.log but others won't: p = Popen('hg xxx', stdin=PIPE, stdout=PIPE) do_some_interactive_thing(p) Since it could break output parsing of existing scripts, ui.simulatettyecho is changed to be off by default. diff --git a/mercurial/commandserver.py b/mercurial/commandserver.py --- a/mercurial/commandserver.py +++ b/mercurial/commandserver.py @@ -196,9 +196,6 @@ class server(object): for ui in uis: # any kind of interaction must use server channels ui.setconfig('ui', 'nontty', 'true', 'commandserver') - # echo-back message shouldn't be written because a client - # typically have to parse the output - ui.setconfig('ui', 'simulatettyecho', 'false', 'commandserver') req = dispatch.request(args[:], copiedui, self.repo, self.cin, self.cout, self.cerr) diff --git a/mercurial/ui.py b/mercurial/ui.py --- a/mercurial/ui.py +++ b/mercurial/ui.py @@ -714,7 +714,7 @@ class ui(object): # sometimes self.interactive disagrees with isatty, # show response provided on stdin when simulating if (not util.isatty(self.fin) - and self.configbool('ui', 'simulatettyecho', True)): + and self.configbool('ui', 'simulatettyecho')): self.write(r, "\n") return r except EOFError: diff --git a/tests/run-tests.py b/tests/run-tests.py --- a/tests/run-tests.py +++ b/tests/run-tests.py @@ -681,6 +681,7 @@ class Test(unittest.TestCase): hgrc.write('slash = True\n') hgrc.write('interactive = False\n') hgrc.write('mergemarkers = detailed\n') + hgrc.write('simulatettyecho = True\n') hgrc.write('[defaults]\n') hgrc.write('backout = -d "0 0"\n') hgrc.write('commit = -d "0 0"\n') diff --git a/tests/test-basic.t b/tests/test-basic.t --- a/tests/test-basic.t +++ b/tests/test-basic.t @@ -8,6 +8,7 @@ Create a repository: ui.slash=True ui.interactive=False ui.mergemarkers=detailed + ui.simulatettyecho=True $ hg init t $ cd t diff --git a/tests/test-commandserver.t b/tests/test-commandserver.t --- a/tests/test-commandserver.t +++ b/tests/test-commandserver.t @@ -5,6 +5,12 @@ #endif $ export PYTHONPATH +typical client does not want echo-back messages, so test without +ui.simulatettyecho: + + $ grep -v '^simulatettyecho ' < $HGRCPATH >> $HGRCPATH.new + $ mv $HGRCPATH.new $HGRCPATH + $ hg init repo $ cd repo @@ -178,7 +184,6 @@ check that local configs for the cached ui.mergemarkers=detailed ui.foo=bar ui.nontty=true - ui.simulatettyecho=false *** runcommand init foo *** runcommand -R foo showconfig ui defaults defaults.backout=-d "0 0" @@ -189,7 +194,6 @@ check that local configs for the cached ui.interactive=False ui.mergemarkers=detailed ui.nontty=true - ui.simulatettyecho=false $ rm -R foo