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.
--- 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