changeset 20857:6eb55310fcbc stable

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.
author Sean Farley <sean.michael.farley@gmail.com>
date Thu, 27 Mar 2014 17:21:27 -0500
parents dd2e25e49862
children bc56ec9e64df
files mercurial/templater.py tests/test-command-template.t
diffstat 2 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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):
--- 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 ..