# HG changeset patch # User Ludovic Chabant # Date 1438143908 25200 # Node ID 4bca25f99463c36e9b012c462c2827e1ab351fec # Parent b22e69ff54f46c92ca2a88438772c6c12c645bac serve: Improve Jinja rendering error reporting. Some errors in Jinja are not wrapped in `TemplateSyntaxError` exceptions, so we have to wrap them ourselves to at least say what file it happened in. diff -r b22e69ff54f4 -r 4bca25f99463 piecrust/templating/jinjaengine.py --- a/piecrust/templating/jinjaengine.py Tue Jul 28 21:24:10 2015 -0700 +++ b/piecrust/templating/jinjaengine.py Tue Jul 28 21:25:08 2015 -0700 @@ -53,14 +53,20 @@ return tpl.render(data) except TemplateSyntaxError as tse: raise self._getTemplatingError(tse) + except Exception as ex: + msg = "Error rendering Jinja markup" + rel_path = os.path.relpath(path, self.app.root_dir) + raise TemplatingError(msg, rel_path) from ex def renderFile(self, paths, data): self._ensureLoaded() tpl = None logger.debug("Looking for template: %s" % paths) + rendered_path = None for p in paths: try: tpl = self.env.get_template(p) + rendered_path = p break except TemplateSyntaxError as tse: raise self._getTemplatingError(tse) @@ -74,6 +80,10 @@ return tpl.render(data) except TemplateSyntaxError as tse: raise self._getTemplatingError(tse) + except Exception as ex: + msg = "Error rendering Jinja markup" + rel_path = os.path.relpath(rendered_path, self.app.root_dir) + raise TemplatingError(msg, rel_path) from ex def _getTemplatingError(self, tse, filename=None): filename = tse.filename or filename