alias: ensure checksignature() is applied directly to the command (issue2286) stable
authorBrodie Rao <brodie@bitheap.org>
Thu, 22 Jul 2010 15:26:26 -0400
branchstable
changeset 11676 e4357c214bf1
parent 11675 f92f8921a5cc
child 11677 8f8a7976f4bc
alias: ensure checksignature() is applied directly to the command (issue2286) Aliased commands that received bad arguments would raise TypeError instead of SignatureError. This only affected commands that weren't wrapped by extensions. Using util.checksignature() in cmdalias.__call__() ensures SignatureError is raised correctly.
mercurial/dispatch.py
tests/test-alias
tests/test-alias.out
--- a/mercurial/dispatch.py	Sat Jul 24 00:38:08 2010 +0200
+++ b/mercurial/dispatch.py	Thu Jul 22 15:26:26 2010 -0400
@@ -248,7 +248,7 @@
         if self.shadows:
             ui.debug("alias '%s' shadows command\n" % self.name)
 
-        return self.fn(ui, *args, **opts)
+        return util.checksignature(self.fn)(ui, *args, **opts)
 
 def addaliases(ui, cmdtable):
     # aliases are processed after extensions have been loaded, so they
--- a/tests/test-alias	Sat Jul 24 00:38:08 2010 +0200
+++ b/tests/test-alias	Thu Jul 22 15:26:26 2010 -0400
@@ -14,6 +14,7 @@
 dln = lognull --debug
 nousage = rollback
 put = export -r 0 -o "\$FOO/%R.diff"
+rt = root
 
 [defaults]
 mylog = -q
@@ -64,3 +65,8 @@
 echo '% path expanding'
 FOO=`pwd` hg put
 cat 0.diff
+
+echo '% invalid arguments'
+hg rt foo
+
+exit 0
--- a/tests/test-alias.out	Sat Jul 24 00:38:08 2010 +0200
+++ b/tests/test-alias.out	Thu Jul 22 15:26:26 2010 -0400
@@ -43,3 +43,16 @@
 +++ b/foo	Thu Jan 01 00:00:00 1970 +0000
 @@ -0,0 +1,1 @@
 +foo
+% invalid arguments
+hg rt: invalid arguments
+hg rt 
+
+alias for: hg root
+
+print the root (top) of the current working directory
+
+    Print the root directory of the current repository.
+
+    Returns 0 on success.
+
+use "hg -v help rt" to show global options