On 07/30/2013 05:23 PM, Ana Krivokapic wrote:> On 07/30/2013 01:15 PM, > There's a typo in the commit message: "ises" instead of "uses".


On 07/30/2013 05:43 PM, Nathaniel McCallum wrote:
On Tue, 2013-07-30 at 17:36 +0200, Petr Viktorin wrote:
On 07/30/2013 05:20 PM, Nathaniel McCallum wrote:
On Tue, 2013-07-30 at 13:15 +0200, Petr Viktorin wrote:
See the commit message or ticket.

This is a nuisance when writing tests for interactive prompting.


There appears to be a stray comma.

The comma at the end of a print statement suppresses the trailing newline.

Wouldn't sys.stdout.write() be clearer?

I don't have a preference. Changed.

The comma approach also doesn't work in py3k.

Well, the print statement itself doesn't work in py3k :)

The 2to3 tool handles the trailing comma without problems (and we'll probably use the print fixer when porting).

$ 2to3 --fix print /tmp/printtest.py
RefactoringTool: Refactored /tmp/printtest.py
--- /tmp/printtest.py   (original)
+++ /tmp/printtest.py   (refactored)
@@ -1 +1 @@
-print 'foo',
+print('foo', end=' ')
RefactoringTool: Files that need to be modified:
RefactoringTool: /tmp/printtest.py

From 2a7de8b2ea9eda5a8e8669f306f193cd331acd64 Mon Sep 17 00:00:00 2001
From: Petr Viktorin <pvikt...@redhat.com>
Date: Tue, 30 Jul 2013 13:07:18 +0200
Subject: [PATCH] Fix installutils.get_password without a TTY

If stdin is a TTY, ipaserver.install.installutils uses getpass and all
is well. Without a TTY, though, there were two problems:

* The prompt was not printed
* On end of file, an empty string was returned, which caused read_password
  to enter an infinite loop.

Fix both problems.

 ipaserver/install/installutils.py | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/ipaserver/install/installutils.py b/ipaserver/install/installutils.py
index 6a6841a110b531be0c8445eaa6f861d627340d30..d17d53d1d05a87e02ee5cf0953ddce53a79a4582 100644
--- a/ipaserver/install/installutils.py
+++ b/ipaserver/install/installutils.py
@@ -256,7 +256,13 @@ def get_password(prompt):
     if os.isatty(sys.stdin.fileno()):
         return getpass.getpass(prompt)
-        return sys.stdin.readline().rstrip()
+        sys.stdout.write(prompt)
+        sys.stdout.flush()
+        line = sys.stdin.readline()
+        if not line:
+            raise EOFError()
+        return line.rstrip()
 def _read_password_default_validator(password):
     if len(password) < 8:

Freeipa-devel mailing list

Reply via email to