diff --git a/mercurial/templater.py b/mercurial/templater.py --- a/mercurial/templater.py +++ b/mercurial/templater.py @@ -212,6 +212,7 @@ def buildfunc(exp, context): 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 function '%s'") % n) def date(context, mapping, args): if not (1 <= len(args) <= 2): 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 @@ -1416,6 +1416,12 @@ Behind the scenes, this will throw Value 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 function 'foo' + [255] + $ cd ..