fixed more unittests
--HG--
branch : trunk
diff --git a/jinja2/_speedups.c b/jinja2/_speedups.c
index 6aad8ec..36a1404 100644
--- a/jinja2/_speedups.c
+++ b/jinja2/_speedups.c
@@ -115,7 +115,7 @@
escape(PyObject *self, PyObject *args)
{
PyObject *text = NULL, *s = NULL, *rv = NULL;
- if (!PyArg_UnpackTuple(args, "escape", 1, 2, &text))
+ if (!PyArg_UnpackTuple(args, "escape", 1, 1, &text))
return NULL;
/* we don't have to escape integers, bools or floats */
diff --git a/jinja2/environment.py b/jinja2/environment.py
index 1ed0464..35b01e7 100644
--- a/jinja2/environment.py
+++ b/jinja2/environment.py
@@ -182,7 +182,10 @@
"""Represents a template."""
def __init__(self, environment, code, globals, uptodate=None):
- namespace = {'environment': environment}
+ namespace = {
+ 'environment': environment,
+ '__jinja_template__': self
+ }
exec code in namespace
self.environment = environment
self.name = namespace['name']
@@ -191,18 +194,27 @@
self.blocks = namespace['blocks']
self.globals = globals
- # debug helpers
+ # debug and loader helpers
self._get_debug_info = namespace['get_debug_info']
self._uptodate = uptodate
- namespace['__jinja_template__'] = self
def render(self, *args, **kwargs):
"""Render the template into a string."""
- return u''.join(self.generate(*args, **kwargs))
+ try:
+ return u''.join(self.generate(*args, **kwargs))
+ except:
+ # hide the `generate` frame
+ exc_type, exc_value, tb = sys.exc_info()
+ raise exc_type, exc_value, tb.tb_next
def stream(self, *args, **kwargs):
"""Return a `TemplateStream` that generates the template."""
- return TemplateStream(self.generate(*args, **kwargs))
+ try:
+ return TemplateStream(self.generate(*args, **kwargs))
+ except:
+ # hide the `generate` frame
+ exc_type, exc_value, tb = sys.exc_info()
+ raise exc_type, exc_value, tb.tb_next
def generate(self, *args, **kwargs):
"""Return a generator that generates the template."""
diff --git a/jinja2/loaders.py b/jinja2/loaders.py
index b621bbf..dc3ccfb 100644
--- a/jinja2/loaders.py
+++ b/jinja2/loaders.py
@@ -39,10 +39,12 @@
"""
def __init__(self, cache_size=50, auto_reload=True):
- if cache_size > 0:
- self.cache = LRUCache(cache_size)
- else:
+ if cache_size == 0:
self.cache = None
+ elif cache_size < 0:
+ self.cache = {}
+ else:
+ self.cache = LRUCache(cache_size)
self.auto_reload = auto_reload
def get_source(self, environment, template):
@@ -134,7 +136,8 @@
class DictLoader(BaseLoader):
"""Loads a template from a python dict. Used for unittests mostly."""
- def __init__(self, mapping):
+ def __init__(self, mapping, cache_size=50):
+ BaseLoader.__init__(self, cache_size, False)
self.mapping = mapping
def get_source(self, environment, template):
diff --git a/jinja2/runtime.py b/jinja2/runtime.py
index e1bf486..e0630cc 100644
--- a/jinja2/runtime.py
+++ b/jinja2/runtime.py
@@ -277,7 +277,7 @@
self._undefined_name
)
else:
- hint = '%r object has no attribute %s' % (
+ hint = '%r object has no attribute %r' % (
self._undefined_obj.__class__.__name__,
self._undefined_name
)