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