diff --git a/mercurial/templater.py b/mercurial/templater.py --- a/mercurial/templater.py +++ b/mercurial/templater.py @@ -1011,8 +1011,11 @@ class templater(object): 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) diff --git a/tests/test-template-engine.t b/tests/test-template-engine.t --- a/tests/test-template-engine.t +++ b/tests/test-template-engine.t @@ -44,4 +44,11 @@ 0 97e5f848f0936960273bbf75be6388cd0350a32b -1 0000000000000000000000000000000000000000 -1 0000000000000000000000000000000000000000 -1 0000000000000000000000000000000000000000 +invalid engine type: + + $ echo 'changeset = unknown:changeset.txt' > unknownenginemap + $ hg log --style=./unknownenginemap + abort: invalid template engine: unknown + [255] + $ cd ..