changeset 21569:c5afb07c33d3 stable

alias: handle shlex error in command aliases No command should fail with ValueError just because there is unparseable alias definition. It returns 1 like other badalias handlers, but should be changed to 255 in a later version because we use 255 for general command error.
author Yuya Nishihara <yuya@tcha.org>
date Sat, 17 May 2014 13:06:16 +0900
parents 8dd17b19e722
children d0ec3800101a
files mercurial/dispatch.py tests/test-alias.t
diffstat 2 files changed, 20 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/dispatch.py	Thu May 08 19:03:00 2014 +0900
+++ b/mercurial/dispatch.py	Sat May 17 13:06:16 2014 +0900
@@ -383,7 +383,16 @@
             self.fn = fn
             return
 
-        args = shlex.split(self.definition)
+        try:
+            args = shlex.split(self.definition)
+        except ValueError, inst:
+            def fn(ui, *args):
+                ui.warn(_("error in definition for alias '%s': %s\n")
+                        % (self.name, inst))
+                return 1
+            self.fn = fn
+            self.badalias = True
+            return
         self.cmdname = cmd = args.pop(0)
         args = map(util.expandpath, args)
 
--- a/tests/test-alias.t	Thu May 08 19:03:00 2014 +0900
+++ b/tests/test-alias.t	Sat May 17 13:06:16 2014 +0900
@@ -11,6 +11,7 @@
   > ambiguous = s
   > recursive = recursive
   > nodefinition =
+  > noclosingquotation = '
   > no--cwd = status --cwd elsewhere
   > no-R = status -R elsewhere
   > no--repo = status --repo elsewhere
@@ -92,6 +93,15 @@
   no definition for alias 'nodefinition'
 
 
+no closing quotation
+
+  $ hg noclosing
+  error in definition for alias 'noclosingquotation': No closing quotation
+  [1]
+  $ hg help noclosing
+  error in definition for alias 'noclosingquotation': No closing quotation
+
+
 invalid options
 
   $ hg no--cwd