Rev 4508: ui.get_boolean can also use bool_from_string. in file:///home/vila/src/bzr/experimental/bool-config-option/
Vincent Ladeuil
v.ladeuil+lp at free.fr
Thu Jul 2 10:09:35 BST 2009
At file:///home/vila/src/bzr/experimental/bool-config-option/
------------------------------------------------------------
revno: 4508
revision-id: v.ladeuil+lp at free.fr-20090702090935-ya2kx3t8mz1tsf2k
parent: v.ladeuil+lp at free.fr-20090702090722-m7evvdlgz7pxg0xo
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: bool-config-option
timestamp: Thu 2009-07-02 11:09:35 +0200
message:
ui.get_boolean can also use bool_from_string.
* bzrlib/ui/__init__.py:
(CLIUIFactory.get_boolean): Simplified by using bool_from_string.
-------------- next part --------------
=== modified file 'bzrlib/tests/test_ui.py'
--- a/bzrlib/tests/test_ui.py 2009-07-02 08:52:35 +0000
+++ b/bzrlib/tests/test_ui.py 2009-07-02 09:09:35 +0000
@@ -174,21 +174,22 @@
pb1.finished()
def assert_get_bool_acceptance_of_user_input(self, factory):
- factory.stdin = StringIO("y\nyes with garbage\n"
- "yes\nn\nnot an answer\n"
- "no\n"
- "N\nY\n"
- "foo\n"
- )
+ factory.stdin = StringIO("y\n" # True
+ "n\n" # False
+ "yes with garbage\nY\n" # True
+ "not an answer\nno\n" # False
+ "I'm sure!\nyes\n" # True
+ "NO\n" # False
+ "foo\n")
factory.stdout = StringIO()
factory.stderr = StringIO()
# there is no output from the base factory
self.assertEqual(True, factory.get_boolean(""))
- self.assertEqual(True, factory.get_boolean(""))
- self.assertEqual(False, factory.get_boolean(""))
- self.assertEqual(False, factory.get_boolean(""))
- self.assertEqual(False, factory.get_boolean(""))
- self.assertEqual(True, factory.get_boolean(""))
+ self.assertEqual(False, factory.get_boolean(""))
+ self.assertEqual(True, factory.get_boolean(""))
+ self.assertEqual(False, factory.get_boolean(""))
+ self.assertEqual(True, factory.get_boolean(""))
+ self.assertEqual(False, factory.get_boolean(""))
self.assertEqual("foo\n", factory.stdin.read())
# stdin should be empty
self.assertEqual('', factory.stdin.readline())
=== modified file 'bzrlib/ui/__init__.py'
--- a/bzrlib/ui/__init__.py 2009-07-02 08:52:35 +0000
+++ b/bzrlib/ui/__init__.py 2009-07-02 09:09:35 +0000
@@ -192,15 +192,16 @@
self.stdout = stdout or sys.stdout
self.stderr = stderr or sys.stderr
+ _accepted_boolean_strings = dict(y=True, n=False, yes=True, no=False)
+
def get_boolean(self, prompt):
while True:
self.prompt(prompt + "? [y/n]: ")
line = self.stdin.readline()
- line = line.lower()
- if line in ('y\n', 'yes\n'):
- return True
- if line in ('n\n', 'no\n'):
- return False
+ line = line.rstrip('\n')
+ val = bool_from_string(line, self._accepted_boolean_strings)
+ if val is not None:
+ return val
def get_non_echoed_password(self):
isatty = getattr(self.stdin, 'isatty', None)
More information about the bazaar-commits
mailing list