Rev 4493: get_boolean accept more values. in file:///home/vila/src/bzr/experimental/cleanup-strict/
Vincent Ladeuil
v.ladeuil+lp at free.fr
Mon Jun 29 14:01:20 BST 2009
At file:///home/vila/src/bzr/experimental/cleanup-strict/
------------------------------------------------------------
revno: 4493
revision-id: v.ladeuil+lp at free.fr-20090629130120-l3zssq0ra1n7y4wz
parent: v.ladeuil+lp at free.fr-20090629124834-aytaov2q72pad3p7
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: cleanup-strict
timestamp: Mon 2009-06-29 15:01:20 +0200
message:
get_boolean accept more values.
* bzrlib/tests/test_ui.py:
(UITests.assert_get_bool_acceptance_of_user_input): Add more values.
* bzrlib/ui/__init__.py:
(CLIUIFactory.get_boolean): Use string_as_boolean to accept more
values (and address the FIXME asking for case variations).
-------------- next part --------------
=== modified file 'bzrlib/tests/test_ui.py'
--- a/bzrlib/tests/test_ui.py 2009-06-29 12:48:34 +0000
+++ b/bzrlib/tests/test_ui.py 2009-06-29 13:01:20 +0000
@@ -174,14 +174,16 @@
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\nfoo\n")
+ factory.stdin = StringIO("y\nyes with garbage\nY\nI'm sure!\nyes\n"
+ "n\nnot an answer\nno\nNO\n"
+ "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(True, factory.get_boolean(""))
+ self.assertEqual(False, factory.get_boolean(""))
self.assertEqual(False, factory.get_boolean(""))
self.assertEqual(False, factory.get_boolean(""))
self.assertEqual("foo\n", factory.stdin.read())
=== modified file 'bzrlib/ui/__init__.py'
--- a/bzrlib/ui/__init__.py 2009-06-29 12:48:34 +0000
+++ b/bzrlib/ui/__init__.py 2009-06-29 13:01:20 +0000
@@ -184,14 +184,12 @@
self.stderr = stderr or sys.stderr
def get_boolean(self, prompt):
- # FIXME: make a regexp and handle case variations as well.
while True:
self.prompt(prompt + "? [y/n]: ")
line = self.stdin.readline()
- if line in ('y\n', 'yes\n'):
- return True
- if line in ('n\n', 'no\n'):
- return False
+ val = string_as_boolean(line[:-1]) # strip \n
+ 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