# HG changeset patch # User Sean Farley # Date 1395958887 18000 # Node ID 6eb55310fcbc1b6e72e26240c430a427bfd53f9c # 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 -r dd2e25e49862 -r 6eb55310fcbc mercurial/templater.py --- a/mercurial/templater.py Fri Mar 07 14:06:52 2014 -0500 +++ b/mercurial/templater.py Thu Mar 27 17:21:27 2014 -0500 @@ -212,6 +212,7 @@ 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 -r dd2e25e49862 -r 6eb55310fcbc tests/test-command-template.t --- a/tests/test-command-template.t Fri Mar 07 14:06:52 2014 -0500 +++ b/tests/test-command-template.t Thu Mar 27 17:21:27 2014 -0500 @@ -1416,6 +1416,12 @@ 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 ..