more unittests
--HG--
branch : trunk
diff --git a/tests/test_loaders.py b/tests/test_loaders.py
index fb5ca73..9cc1dcc 100644
--- a/tests/test_loaders.py
+++ b/tests/test_loaders.py
@@ -17,33 +17,28 @@
dict_loader = loaders.DictLoader({
'justdict.html': 'FOO'
})
-
package_loader = loaders.PackageLoader('loaderres', 'templates')
-
filesystem_loader = loaders.FileSystemLoader('loaderres/templates')
-
function_loader = loaders.FunctionLoader({'justfunction.html': 'FOO'}.get)
-
choice_loader = loaders.ChoiceLoader([dict_loader, package_loader])
+prefix_loader = loaders.PrefixLoader({
+ 'a': filesystem_loader,
+ 'b': dict_loader
+})
def test_dict_loader():
env = Environment(loader=dict_loader)
tmpl = env.get_template('justdict.html')
assert tmpl.render().strip() == 'FOO'
- try:
- env.get_template('missing.html')
- except TemplateNotFound:
- pass
- else:
- raise AssertionError('expected template exception')
+ raises(TemplateNotFound, env.get_template, 'missing.html')
def test_package_loader():
env = Environment(loader=package_loader)
tmpl = env.get_template('test.html')
assert tmpl.render().strip() == 'BAR'
- raises(TemplateNotFound, lambda: env.get_template('missing.html'))
+ raises(TemplateNotFound, env.get_template, 'missing.html')
def test_filesystem_loader():
@@ -52,7 +47,7 @@
assert tmpl.render().strip() == 'BAR'
tmpl = env.get_template('foo/test.html')
assert tmpl.render().strip() == 'FOO'
- raises(TemplateNotFound, lambda: env.get_template('missing.html'))
+ raises(TemplateNotFound, env.get_template, 'missing.html')
def test_choice_loader():
@@ -61,21 +56,48 @@
assert tmpl.render().strip() == 'FOO'
tmpl = env.get_template('test.html')
assert tmpl.render().strip() == 'BAR'
- try:
- env.get_template('missing.html')
- except TemplateNotFound:
- pass
- else:
- raise AssertionError('expected template exception')
+ raises(TemplateNotFound, env.get_template, 'missing.html')
def test_function_loader():
env = Environment(loader=function_loader)
tmpl = env.get_template('justfunction.html')
assert tmpl.render().strip() == 'FOO'
- try:
- env.get_template('missing.html')
- except TemplateNotFound:
- pass
- else:
- raise AssertionError('expected template exception')
+ raises(TemplateNotFound, env.get_template, 'missing.html')
+
+
+def test_prefix_loader():
+ env = Environment(loader=prefix_loader)
+ tmpl = env.get_template('a/test.html')
+ assert tmpl.render().strip() == 'BAR'
+ tmpl = env.get_template('b/justdict.html')
+ assert tmpl.render().strip() == 'FOO'
+ raises(TemplateNotFound, env.get_template, 'missing')
+
+
+def test_caching():
+ changed = False
+ class TestLoader(loaders.BaseLoader):
+ def get_source(self, environment, template):
+ return u'foo', None, lambda: not changed
+ env = Environment(loader=TestLoader(), cache_size=-1)
+ tmpl = env.get_template('template')
+ assert tmpl is env.get_template('template')
+ changed = True
+ assert tmpl is not env.get_template('template')
+ changed = False
+
+ env = Environment(loader=TestLoader(), cache_size=0)
+ assert env.get_template('template') \
+ is not env.get_template('template')
+
+ env = Environment(loader=TestLoader(), cache_size=2)
+ t1 = env.get_template('one')
+ t2 = env.get_template('two')
+ print env.cache
+ assert t2 is env.get_template('two')
+ assert t1 is env.get_template('one')
+ t3 = env.get_template('three')
+ assert 'one' in env.cache
+ assert 'two' not in env.cache
+ assert 'three' in env.cache
diff --git a/tests/test_macros.py b/tests/test_macros.py
index 5958250..ee6c353 100644
--- a/tests/test_macros.py
+++ b/tests/test_macros.py
@@ -86,3 +86,21 @@
def test_include(env):
tmpl = env.from_string('{% from "include" import test %}{{ test("foo") }}')
assert tmpl.render() == '[foo]'
+
+
+def test_macro_api(env):
+ tmpl = env.from_string('{% macro foo(a, b) %}{% endmacro %}'
+ '{% macro bar() %}{{ varargs }}{{ kwargs }}{% endmacro %}'
+ '{% macro baz() %}{{ caller() }}{% endmacro %}')
+ assert tmpl.module.foo.arguments == ('a', 'b')
+ assert tmpl.module.foo.defaults == ()
+ assert tmpl.module.foo.name == 'foo'
+ assert not tmpl.module.foo.caller
+ assert not tmpl.module.foo.catch_kwargs
+ assert not tmpl.module.foo.catch_varargs
+ assert tmpl.module.bar.arguments == ()
+ assert tmpl.module.bar.defaults == ()
+ assert not tmpl.module.bar.caller
+ assert tmpl.module.bar.catch_kwargs
+ assert tmpl.module.bar.catch_varargs
+ assert tmpl.module.baz.caller