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