Skip to content

Commit

Permalink
When a template renderer isn't supported, provide a better error mess…
Browse files Browse the repository at this point in the history
…age.

Closes pecan#81
  • Loading branch information
ryanpetrello committed Sep 21, 2016
1 parent 6ccba25 commit 485cf9f
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 0 deletions.
5 changes: 5 additions & 0 deletions pecan/core.py
Expand Up @@ -412,6 +412,11 @@ def render(self, template, namespace):
renderer_name,
self.template_path
)
if renderer is None:
raise RuntimeError(
'support for "%s" was not found; ' % renderer_name +
'supported template engines are %s' % self.renderers.keys()
)
else:
renderer = self.renderers.get(
self.default_renderer,
Expand Down
3 changes: 3 additions & 0 deletions pecan/templating.py
Expand Up @@ -285,3 +285,6 @@ def get(self, name, template_path):
else:
self._renderers[name] = cls(template_path, self.extra_vars)
return self._renderers[name]

def keys(self, *args, **kwargs):
return self._renderer_classes.keys(*args, **kwargs)
17 changes: 17 additions & 0 deletions pecan/tests/test_base.py
Expand Up @@ -1898,6 +1898,23 @@ def badtemplate(self):
break
assert error_msg is not None

def test_renderer_not_found(self):

class RootController(object):
@expose('mako3:mako.html')
def index(self, name='Jonathan'):
return dict(name=name)

app = TestApp(
Pecan(RootController(), template_path=self.template_path)
)
try:
r = app.get('/')
except Exception as e:
expected = e

assert 'support for "mako3" was not found;' in str(expected)

def test_json(self):
try:
from simplejson import loads
Expand Down

0 comments on commit 485cf9f

Please sign in to comment.