Added clean messages on bug_from_shortname failure.
authorW. Trevor King <wking@drexel.edu>
Wed, 29 Jul 2009 19:46:37 +0000 (15:46 -0400)
committerW. Trevor King <wking@drexel.edu>
Wed, 29 Jul 2009 19:46:37 +0000 (15:46 -0400)
So user's don't get confused.

14 files changed:
becommands/assign.py
becommands/close.py
becommands/comment.py
becommands/depend.py
becommands/merge.py
becommands/open.py
becommands/remove.py
becommands/severity.py
becommands/show.py
becommands/status.py
becommands/tag.py
becommands/target.py
libbe/bugdir.py
libbe/cmdutil.py

index 536bca6d4ffd41fd614363d3f256fdb4b5fcfe04..81aac2b412db12b246a69c1b385ec8cd20eb683f 100644 (file)
@@ -54,7 +54,7 @@ def execute(args, test=False):
         help()
         raise cmdutil.UsageError("Too many arguments.")
     bd = bugdir.BugDir(from_disk=True, manipulate_encodings=not test)
-    bug = bd.bug_from_shortname(args[0])
+    bug = cmdutil.bug_from_shortname(bd, args[0])
     if len(args) == 1:
         bug.assigned = bd.user_id
     elif len(args) == 2:
index 0ba8f502bae41bf94b195e9157ef5d0a44e6073c..327817aca61662536894036ac2de073059a66333 100644 (file)
@@ -42,7 +42,7 @@ def execute(args, test=False):
     if len(args) > 1:
         raise cmdutil.UsageError("Too many arguments.")
     bd = bugdir.BugDir(from_disk=True, manipulate_encodings=not test)
-    bug = bd.bug_from_shortname(args[0])
+    bug = cmdutil.bug_from_shortname(bd, args[0])
     bug.status = "closed"
     bd.save()
 
index 55b5913b8c60a166a2e10ead1ba05e3c576f9bf6..4221ef8ba003fc1e4daf4d390cdb24d0eb79ae40 100644 (file)
@@ -32,7 +32,7 @@ def execute(args, test=False):
     >>> os.chdir(bd.root)
     >>> execute(["a", "This is a comment about a"], test=True)
     >>> bd._clear_bugs()
-    >>> bug = bd.bug_from_shortname("a")
+    >>> bug = cmdutil.bug_from_shortname(bd, "a")
     >>> bug.load_comments(load_full=False)
     >>> comment = bug.comment_root[0]
     >>> print comment.body
@@ -54,7 +54,7 @@ def execute(args, test=False):
     >>> os.environ["EDITOR"] = "echo 'I like cheese' > "
     >>> execute(["b"], test=True)
     >>> bd._clear_bugs()
-    >>> bug = bd.bug_from_shortname("b")
+    >>> bug = cmdutil.bug_from_shortname(bd, "b")
     >>> bug.load_comments(load_full=False)
     >>> comment = bug.comment_root[0]
     >>> print comment.body
@@ -82,7 +82,7 @@ def execute(args, test=False):
     
     bd = bugdir.BugDir(from_disk=True,
                        manipulate_encodings=not test)
-    bug = bd.bug_from_shortname(bugname)
+    bug = cmdutil.bug_from_shortname(bd, bugname)
     bug.load_comments(load_full=False)
     if is_reply:
         parent = bug.comment_root.comment_from_shortname(shortname,
index 4a23b0f8a2c9ee94896d6b3490903c863a07aa71..d22ed2d9d85f69e43302d7d121c9fd8a2d47b6ea 100644 (file)
@@ -48,9 +48,9 @@ def execute(args, test=False):
         raise cmdutil.UsageError("Too many arguments.")
     
     bd = bugdir.BugDir(from_disk=True, manipulate_encodings=not test)
-    bugA = bd.bug_from_shortname(args[0])
+    bugA = cmdutil.bug_from_shortname(bd, args[0])
     if len(args) == 2:
-        bugB = bd.bug_from_shortname(args[1])
+        bugB = cmdutil.bug_from_shortname(bd, args[1])
         estrs = bugA.extra_strings
         depend_string = "BLOCKED-BY:%s" % bugB.uuid
         if options.remove == True:
index 4aaefa85a7fd16ef83e47ec6a022eb2c45cc0252..633067c36e5c41ec0a80cb6bbd123bf10d7aa424 100644 (file)
@@ -134,9 +134,9 @@ def execute(args, test=False):
         raise cmdutil.UsageError("Too many arguments.")
     
     bd = bugdir.BugDir(from_disk=True, manipulate_encodings=not test)
-    bugA = bd.bug_from_shortname(args[0])
+    bugA = cmdutil.bug_from_shortname(bd, args[0])
     bugA.load_comments()
-    bugB = bd.bug_from_shortname(args[1])
+    bugB = cmdutil.bug_from_shortname(bd, args[1])
     bugB.load_comments()
     mergeA = bugA.new_comment("Merged from bug %s" % bugB.uuid)
     newCommTree = copy.deepcopy(bugB.comment_root)
index 2ef5f4303aa628d58091bbc053b58e027194d6f8..242ceb29274f97282140df5cdf033805bdf1b79c 100644 (file)
@@ -41,7 +41,7 @@ def execute(args, test=False):
     if len(args) > 1:
         raise cmdutil.UsageError, "Too many arguments."
     bd = bugdir.BugDir(from_disk=True, manipulate_encodings=not test)
-    bug = bd.bug_from_shortname(args[0])
+    bug = cmdutil.bug_from_shortname(bd, args[0])
     bug.status = "open"
 
 def get_parser():
index d79a7bef125712497bf824370c65d85855ea88a9..7193119d2688c838ff804006d436b3763e498715 100644 (file)
@@ -30,7 +30,7 @@ def execute(args, test=False):
     >>> bd._clear_bugs()
     >>> try:
     ...     bd.bug_from_shortname("b")
-    ... except KeyError:
+    ... except bugdir.NoBugMatches:
     ...     print "Bug not found"
     Bug not found
     """
@@ -41,7 +41,7 @@ def execute(args, test=False):
     if len(args) != 1:
         raise cmdutil.UsageError, "Please specify a bug id."
     bd = bugdir.BugDir(from_disk=True, manipulate_encodings=not test)
-    bug = bd.bug_from_shortname(args[0])
+    bug = cmdutil.bug_from_shortname(bd, args[0])
     bd.remove_bug(bug)
     print "Removed bug %s" % bug.uuid
 
index 65467e3289bee5f0063df2744415043c797a14cd..74f241df91a03a1871dcc3ff3e22b58a2d6861d4 100644 (file)
@@ -40,7 +40,7 @@ def execute(args, test=False):
     if len(args) not in (1,2):
         raise cmdutil.UsageError
     bd = bugdir.BugDir(from_disk=True, manipulate_encodings=not test)
-    bug = bd.bug_from_shortname(args[0])
+    bug = cmdutil.bug_from_shortname(bd, args[0])
     if len(args) == 1:
         print bug.severity
     elif len(args) == 2:
index e43cfb9391303b0ae3256dfb1bb9bc525dbf108c..6c942fe9bf1cd724db6bf15729605ce4f174f29b 100644 (file)
@@ -72,7 +72,7 @@ def execute(args, test=False):
             is_comment = False
         if is_comment == True and options.comments == False:
             continue
-        bug = bd.bug_from_shortname(bugname)
+        bug = cmdutil.bug_from_shortname(bd, bugname)
         if is_comment == False:
             if options.XML:
                 print bug.xml(show_comments=options.comments)
index edc948dc5820607710641cbbb6b2155195c36b2c..bff0626bb346ad265fe6aca6f99c322209cf8c68 100644 (file)
@@ -37,7 +37,7 @@ def execute(args, test=False):
     if len(args) not in (1,2):
         raise cmdutil.UsageError
     bd = bugdir.BugDir(from_disk=True, manipulate_encodings=not test)
-    bug = bd.bug_from_shortname(args[0])
+    bug = cmdutil.bug_from_shortname(bd, args[0])
     if len(args) == 1:
         print bug.status
     else:
index 216ffbcbe00e1b50fc1995c7cb6509a9f18cf33f..08247cd81bc9dc46c13929f694d432cc73b08df8 100644 (file)
@@ -92,7 +92,7 @@ def execute(args, test=False):
         if len(tags) > 0:
             print '\n'.join(tags)
         return
-    bug = bd.bug_from_shortname(args[0])
+    bug = cmdutil.bug_from_shortname(bd, args[0])
     if len(args) == 2:
         given_tag = args[1]
         estrs = bug.extra_strings
index 527b16a4984a2bc989ae406f2166da24321ff538..ec10ed693b417ae8fe43dae8d0039e8cadc0c068 100644 (file)
@@ -53,7 +53,7 @@ def execute(args, test=False):
             if target and isinstance(target,str):
                 print target
         return
-    bug = bd.bug_from_shortname(args[0])
+    bug = cmdutil.bug_from_shortname(bd, args[0])
     if len(args) == 1:
         if bug.target is None:
             print "No target assigned."
index 6e020ee784bf21f4363cd9d6aa0c7517c437fd9c..f7345fd2384c0e33d14ab8c57733c6cc07e2b39c 100644 (file)
@@ -62,6 +62,12 @@ class MultipleBugMatches(ValueError):
         self.shortname = shortname
         self.matches = matches
 
+class NoBugMatches(KeyError):
+    def __init__(self, shortname):
+        msg = "No bug matches %s" % shortname
+        KeyError.__init__(self, msg)
+        self.shortname = shortname
+
 
 TREE_VERSION_STRING = "Bugs Everywhere Tree 1 0\n"
 
@@ -530,7 +536,7 @@ settings easy.  Don't set this attribute.  Set .rcs instead, and
             raise MultipleBugMatches(shortname, matches)
         if len(matches) == 1:
             return self.bug_from_uuid(matches[0])
-        raise KeyError("No bug matches %s" % shortname)
+        raise NoBugMatches(shortname)
 
     def bug_from_uuid(self, uuid):
         if not self.has_bug(uuid):
index 853a75a406f53fa863a9263ad5ff12566f5df41a..35d2f9ede509e3da55b0e76b79e0ffe7a21d156c 100644 (file)
@@ -206,6 +206,15 @@ def underlined(instring):
     
     return "%s\n%s" % (instring, "="*len(instring))
 
+def bug_from_shortname(bugdir, shortname):
+    """
+    Exception translation for the command-line interface.
+    """
+    try:
+        bug = bugdir.bug_from_shortname(shortname)
+    except (bugdir.MultipleBugMatches, bugdir.NoBugMatches), e:
+        raise UserError(e.message)
+    return bug
 
 def _test():
     import doctest