Rev 4015: (Daniel) Add help option to shelve prompt. in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Wed Feb 18 08:49:23 GMT 2009


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 4015
revision-id: pqm at pqm.ubuntu.com-20090218084918-7d1qa881h8ahpu82
parent: pqm at pqm.ubuntu.com-20090218051900-z4u214yqxrm7uvtl
parent: jelmer at samba.org-20090216163844-d8n3zc2ah5gudyi8
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Wed 2009-02-18 08:49:18 +0000
message:
  (Daniel) Add help option to shelve prompt.
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/shelf_ui.py             shelver.py-20081005210102-33worgzwrtdw0yrm-1
  bzrlib/tests/test_shelf_ui.py  test_shelf_ui.py-20081027155203-wtcuazg85wp9u4fv-1
    ------------------------------------------------------------
    revno: 4010.1.2
    revision-id: jelmer at samba.org-20090216163844-d8n3zc2ah5gudyi8
    parent: jelmer at samba.org-20090216163752-hiq812wpsmiuduqp
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: bzr.dev
    timestamp: Mon 2009-02-16 17:38:44 +0100
    message:
      Move NEWS item to DEVELOPMENT version from 1.12.
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
    ------------------------------------------------------------
    revno: 4010.1.1
    revision-id: jelmer at samba.org-20090216163752-hiq812wpsmiuduqp
    parent: pqm at pqm.ubuntu.com-20090216105404-hjw8bck3ocg47wjz
    parent: daniel at daniel-watkins.co.uk-20090210004610-9d5uqzyds41pwte4
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: bzr.dev
    timestamp: Mon 2009-02-16 17:37:52 +0100
    message:
      merge Daniels shelve help patch.
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/shelf_ui.py             shelver.py-20081005210102-33worgzwrtdw0yrm-1
      bzrlib/tests/test_shelf_ui.py  test_shelf_ui.py-20081027155203-wtcuazg85wp9u4fv-1
    ------------------------------------------------------------
    revno: 3990.4.4
    revision-id: daniel at daniel-watkins.co.uk-20090210004610-9d5uqzyds41pwte4
    parent: daniel at daniel-watkins.co.uk-20090210004348-l5pkl1g9rj9wddpy
    committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
    branch nick: shelf-prompt
    timestamp: Tue 2009-02-10 00:46:10 +0000
    message:
      Added NEWS entry.
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
    ------------------------------------------------------------
    revno: 3990.4.3
    revision-id: daniel at daniel-watkins.co.uk-20090210004348-l5pkl1g9rj9wddpy
    parent: daniel at daniel-watkins.co.uk-20090210004331-bm19sju6432fu3tx
    committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
    branch nick: shelf-prompt
    timestamp: Tue 2009-02-10 00:43:48 +0000
    message:
      Added help option to shelve prompt.
    modified:
      bzrlib/shelf_ui.py             shelver.py-20081005210102-33worgzwrtdw0yrm-1
    ------------------------------------------------------------
    revno: 3990.4.2
    revision-id: daniel at daniel-watkins.co.uk-20090210004331-bm19sju6432fu3tx
    parent: daniel at daniel-watkins.co.uk-20090210003348-iyfwr4dpfqsvn0ii
    committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
    branch nick: shelf-prompt
    timestamp: Tue 2009-02-10 00:43:31 +0000
    message:
      Added test for help option.
    modified:
      bzrlib/tests/test_shelf_ui.py  test_shelf_ui.py-20081027155203-wtcuazg85wp9u4fv-1
    ------------------------------------------------------------
    revno: 3990.4.1
    revision-id: daniel at daniel-watkins.co.uk-20090210003348-iyfwr4dpfqsvn0ii
    parent: pqm at pqm.ubuntu.com-20090209210810-cq9lgqy519b7wfyi
    committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
    branch nick: shelf-prompt
    timestamp: Tue 2009-02-10 00:33:48 +0000
    message:
      Changed all shelve tests to expect a '?'.
    modified:
      bzrlib/tests/test_shelf_ui.py  test_shelf_ui.py-20081027155203-wtcuazg85wp9u4fv-1
=== modified file 'NEWS'
--- a/NEWS	2009-02-18 04:41:42 +0000
+++ b/NEWS	2009-02-18 08:49:18 +0000
@@ -30,6 +30,9 @@
       generation of a working tree in the new branch.
       (Daniel Watkins, John Klinger, #273993)
 
+    * The ``bzr shelve`` prompt now includes a '?' help option to explain the
+      short options better. (Daniel Watkins, #327429)
+
   BUG FIXES:
 
     * ``bzr unshelve`` gives a more palatable error if passed a non-integer

=== modified file 'bzrlib/shelf_ui.py'
--- a/bzrlib/shelf_ui.py	2009-02-09 23:34:46 +0000
+++ b/bzrlib/shelf_ui.py	2009-02-16 16:37:52 +0000
@@ -157,7 +157,7 @@
         sys.stdout.flush()
         return char
 
-    def prompt_bool(self, question):
+    def prompt_bool(self, question, long=False):
         """Prompt the user with a yes/no question.
 
         This may be overridden by self.auto.  It may also *set* self.auto.  It
@@ -167,12 +167,18 @@
         """
         if self.auto:
             return True
-        char = self.prompt(question + ' [yNfq]')
+        if long:
+            prompt = ' [(y)es, (N)o, (f)inish, or (q)uit]'
+        else:
+            prompt = ' [yNfq?]'
+        char = self.prompt(question + prompt)
         if char == 'y':
             return True
         elif char == 'f':
             self.auto = True
             return True
+        elif char == '?':
+            return self.prompt_bool(question, long=True)
         if char == 'q':
             raise errors.UserAbort()
         else:

=== modified file 'bzrlib/tests/test_shelf_ui.py'
--- a/bzrlib/tests/test_shelf_ui.py	2009-02-11 00:29:57 +0000
+++ b/bzrlib/tests/test_shelf_ui.py	2009-02-16 16:37:52 +0000
@@ -68,20 +68,20 @@
         tree = self.create_shelvable_tree()
         shelver = ExpectShelver(tree, tree.basis_tree())
         e = self.assertRaises(AssertionError, shelver.run)
-        self.assertEqual('Unexpected prompt: Shelve? [yNfq]', str(e))
+        self.assertEqual('Unexpected prompt: Shelve? [yNfq?]', str(e))
 
     def test_wrong_prompt_failure(self):
         tree = self.create_shelvable_tree()
         shelver = ExpectShelver(tree, tree.basis_tree())
         shelver.expect('foo', 'y')
         e = self.assertRaises(AssertionError, shelver.run)
-        self.assertEqual('Wrong prompt: Shelve? [yNfq]', str(e))
+        self.assertEqual('Wrong prompt: Shelve? [yNfq?]', str(e))
 
     def test_shelve_not_diff(self):
         tree = self.create_shelvable_tree()
         shelver = ExpectShelver(tree, tree.basis_tree())
-        shelver.expect('Shelve? [yNfq]', 'n')
-        shelver.expect('Shelve? [yNfq]', 'n')
+        shelver.expect('Shelve? [yNfq?]', 'n')
+        shelver.expect('Shelve? [yNfq?]', 'n')
         # No final shelving prompt because no changes were selected
         shelver.run()
         self.assertFileEqual(LINES_ZY, 'tree/foo')
@@ -89,27 +89,27 @@
     def test_shelve_diff_no(self):
         tree = self.create_shelvable_tree()
         shelver = ExpectShelver(tree, tree.basis_tree())
-        shelver.expect('Shelve? [yNfq]', 'y')
-        shelver.expect('Shelve? [yNfq]', 'y')
-        shelver.expect('Shelve 2 change(s)? [yNfq]', 'n')
+        shelver.expect('Shelve? [yNfq?]', 'y')
+        shelver.expect('Shelve? [yNfq?]', 'y')
+        shelver.expect('Shelve 2 change(s)? [yNfq?]', 'n')
         shelver.run()
         self.assertFileEqual(LINES_ZY, 'tree/foo')
 
     def test_shelve_diff(self):
         tree = self.create_shelvable_tree()
         shelver = ExpectShelver(tree, tree.basis_tree())
-        shelver.expect('Shelve? [yNfq]', 'y')
-        shelver.expect('Shelve? [yNfq]', 'y')
-        shelver.expect('Shelve 2 change(s)? [yNfq]', 'y')
+        shelver.expect('Shelve? [yNfq?]', 'y')
+        shelver.expect('Shelve? [yNfq?]', 'y')
+        shelver.expect('Shelve 2 change(s)? [yNfq?]', 'y')
         shelver.run()
         self.assertFileEqual(LINES_AJ, 'tree/foo')
 
     def test_shelve_one_diff(self):
         tree = self.create_shelvable_tree()
         shelver = ExpectShelver(tree, tree.basis_tree())
-        shelver.expect('Shelve? [yNfq]', 'y')
-        shelver.expect('Shelve? [yNfq]', 'n')
-        shelver.expect('Shelve 1 change(s)? [yNfq]', 'y')
+        shelver.expect('Shelve? [yNfq?]', 'y')
+        shelver.expect('Shelve? [yNfq?]', 'n')
+        shelver.expect('Shelve 1 change(s)? [yNfq?]', 'y')
         shelver.run()
         self.assertFileEqual(LINES_AY, 'tree/foo')
 
@@ -117,8 +117,8 @@
         tree = self.create_shelvable_tree()
         self.build_tree_contents([('tree/foo', '\x00')])
         shelver = ExpectShelver(tree, tree.basis_tree())
-        shelver.expect('Shelve binary changes? [yNfq]', 'y')
-        shelver.expect('Shelve 1 change(s)? [yNfq]', 'y')
+        shelver.expect('Shelve binary changes? [yNfq?]', 'y')
+        shelver.expect('Shelve 1 change(s)? [yNfq?]', 'y')
         shelver.run()
         self.assertFileEqual(LINES_AJ, 'tree/foo')
 
@@ -126,10 +126,10 @@
         tree = self.create_shelvable_tree()
         tree.rename_one('foo', 'bar')
         shelver = ExpectShelver(tree, tree.basis_tree())
-        shelver.expect('Shelve renaming "foo" => "bar"? [yNfq]', 'y')
-        shelver.expect('Shelve? [yNfq]', 'y')
-        shelver.expect('Shelve? [yNfq]', 'y')
-        shelver.expect('Shelve 3 change(s)? [yNfq]', 'y')
+        shelver.expect('Shelve renaming "foo" => "bar"? [yNfq?]', 'y')
+        shelver.expect('Shelve? [yNfq?]', 'y')
+        shelver.expect('Shelve? [yNfq?]', 'y')
+        shelver.expect('Shelve 3 change(s)? [yNfq?]', 'y')
         shelver.run()
         self.assertFileEqual(LINES_AJ, 'tree/foo')
 
@@ -137,8 +137,8 @@
         tree = self.create_shelvable_tree()
         os.unlink('tree/foo')
         shelver = ExpectShelver(tree, tree.basis_tree())
-        shelver.expect('Shelve removing file "foo"? [yNfq]', 'y')
-        shelver.expect('Shelve 1 change(s)? [yNfq]', 'y')
+        shelver.expect('Shelve removing file "foo"? [yNfq?]', 'y')
+        shelver.expect('Shelve 1 change(s)? [yNfq?]', 'y')
         shelver.run()
         self.assertFileEqual(LINES_AJ, 'tree/foo')
 
@@ -148,8 +148,8 @@
         self.build_tree(['tree/foo'])
         tree.add('foo')
         shelver = ExpectShelver(tree, tree.basis_tree())
-        shelver.expect('Shelve adding file "foo"? [yNfq]', 'y')
-        shelver.expect('Shelve 1 change(s)? [yNfq]', 'y')
+        shelver.expect('Shelve adding file "foo"? [yNfq?]', 'y')
+        shelver.expect('Shelve 1 change(s)? [yNfq?]', 'y')
         shelver.run()
         self.failIfExists('tree/foo')
 
@@ -158,22 +158,22 @@
         os.unlink('tree/foo')
         os.mkdir('tree/foo')
         shelver = ExpectShelver(tree, tree.basis_tree())
-        shelver.expect('Shelve changing "foo" from file to directory? [yNfq]',
+        shelver.expect('Shelve changing "foo" from file to directory? [yNfq?]',
                        'y')
-        shelver.expect('Shelve 1 change(s)? [yNfq]', 'y')
+        shelver.expect('Shelve 1 change(s)? [yNfq?]', 'y')
 
     def test_shelve_finish(self):
         tree = self.create_shelvable_tree()
         shelver = ExpectShelver(tree, tree.basis_tree())
-        shelver.expect('Shelve? [yNfq]', 'f')
-        shelver.expect('Shelve 2 change(s)? [yNfq]', 'y')
+        shelver.expect('Shelve? [yNfq?]', 'f')
+        shelver.expect('Shelve 2 change(s)? [yNfq?]', 'y')
         shelver.run()
         self.assertFileEqual(LINES_AJ, 'tree/foo')
 
     def test_shelve_quit(self):
         tree = self.create_shelvable_tree()
         shelver = ExpectShelver(tree, tree.basis_tree())
-        shelver.expect('Shelve? [yNfq]', 'q')
+        shelver.expect('Shelve? [yNfq?]', 'q')
         self.assertRaises(errors.UserAbort, shelver.run)
         self.assertFileEqual(LINES_ZY, 'tree/foo')
 
@@ -187,8 +187,16 @@
         self.build_tree(['tree/bar'])
         tree.add('bar')
         shelver = ExpectShelver(tree, tree.basis_tree(), file_list=['bar'])
-        shelver.expect('Shelve adding file "bar"? [yNfq]', 'y')
-        shelver.expect('Shelve 1 change(s)? [yNfq]', 'y')
+        shelver.expect('Shelve adding file "bar"? [yNfq?]', 'y')
+        shelver.expect('Shelve 1 change(s)? [yNfq?]', 'y')
+        shelver.run()
+
+    def test_shelve_help(self):
+        tree = self.create_shelvable_tree()
+        shelver = ExpectShelver(tree, tree.basis_tree())
+        shelver.expect('Shelve? [yNfq?]', '?')
+        shelver.expect('Shelve? [(y)es, (N)o, (f)inish, or (q)uit]', 'f')
+        shelver.expect('Shelve 2 change(s)? [yNfq?]', 'y')
         shelver.run()
 
 




More information about the bazaar-commits mailing list