# HG changeset patch # User Brodie Rao # Date 2010-07-22 19:26:26 # Node ID e4357c214bf18710650b3468869ac2cb6ec5910f # Parent f92f8921a5cc262f043c99a9ea7afcb9835b2aca 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. diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py --- a/mercurial/dispatch.py +++ b/mercurial/dispatch.py @@ -248,7 +248,7 @@ class cmdalias(object): 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 diff --git a/tests/test-alias b/tests/test-alias --- a/tests/test-alias +++ b/tests/test-alias @@ -14,6 +14,7 @@ shortlog = log --template '{rev} {node|s dln = lognull --debug nousage = rollback put = export -r 0 -o "\$FOO/%R.diff" +rt = root [defaults] mylog = -q @@ -64,3 +65,8 @@ hg dln echo '% path expanding' FOO=`pwd` hg put cat 0.diff + +echo '% invalid arguments' +hg rt foo + +exit 0 diff --git a/tests/test-alias.out b/tests/test-alias.out --- a/tests/test-alias.out +++ b/tests/test-alias.out @@ -43,3 +43,16 @@ diff -r 000000000000 -r e63c23eaa88a foo +++ 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