[PATCH STABLE] templater: raise error for unknown func
Sean Farley
sean.michael.farley at gmail.com
Thu Mar 27 17:44:46 CDT 2014
# HG changeset patch
# User Sean Farley <sean.michael.farley at gmail.com>
# Date 1395958887 18000
# Thu Mar 27 17:21:27 2014 -0500
# Branch stable
# Node ID ccdbb91dda21f43001f86584ce7f3df35882d612
# Parent dd2e25e49862213c73b5ea3412aa1fa5d8c92bab
templater: raise error for unknown func
Previously, if a template '{foo()}' was given, the buildfunc would not be able
to match it and hit a code path that would not return so it would error out
later in the templater stating that NoneType was not iterable. This patch makes
sure that a proper error is raised so that the user can be informed.
Tests have been updated.
diff --git a/mercurial/templater.py b/mercurial/templater.py
--- a/mercurial/templater.py
+++ b/mercurial/templater.py
@@ -210,10 +210,11 @@ def buildfunc(exp, context):
if n in context._filters:
if len(args) != 1:
raise error.ParseError(_("filter %s expects one argument") % n)
f = context._filters[n]
return (runfilter, (args[0][0], args[0][1], f))
+ raise error.ParseError(_("unknown func '%s'") % n)
def date(context, mapping, args):
if not (1 <= len(args) <= 2):
raise error.ParseError(_("date expects one or two arguments"))
diff --git a/tests/test-command-template.t b/tests/test-command-template.t
--- a/tests/test-command-template.t
+++ b/tests/test-command-template.t
@@ -1414,10 +1414,16 @@ Behind the scenes, this will throw Value
$ hg tip --template '{author|email|date}\n'
abort: template filter 'datefilter' is not compatible with keyword 'author'
[255]
+Thrown an error if a template function doesn't exist
+
+ $ hg tip --template '{foo()}\n'
+ hg: parse error: unknown func 'foo'
+ [255]
+
$ cd ..
latesttag:
More information about the Mercurial-devel
mailing list