diff -r a5009789960c -r 6b86ce3e3576 mercurial/templater.py --- a/mercurial/templater.py Thu Apr 07 14:10:49 2016 -0700 +++ b/mercurial/templater.py Sun Apr 03 11:20:50 2016 +0900 @@ -1011,8 +1011,11 @@ def __call__(self, t, **mapping): ttype = t in self.map and self.map[t][0] or 'default' if ttype not in self.ecache: - self.ecache[ttype] = engines[ttype](self.load, - self.filters, self.defaults) + try: + ecls = engines[ttype] + except KeyError: + raise error.Abort(_('invalid template engine: %s') % ttype) + self.ecache[ttype] = ecls(self.load, self.filters, self.defaults) proc = self.ecache[ttype] stream = proc.process(t, mapping)