blob: 7b312c01b64e00e26ded2063177334e560fbd759 [file] [log] [blame]
# -*- coding: utf-8 -*-
"""
unit test for the undefined singletons
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:copyright: 2007 by Armin Ronacher.
:license: BSD, see LICENSE for more details.
"""
from jinja2 import Environment
from jinja2.exceptions import TemplateRuntimeError
from jinja2.datastructure import SilentUndefined, ComplainingUndefined
silent_env = Environment(undefined_singleton=SilentUndefined)
complaining_env = Environment(undefined_singleton=ComplainingUndefined)
JUSTUNDEFINED = '''{{ missing }}'''
DEFINEDUNDEFINED = '''{{ missing is defined }}|{{ given is defined }}'''
ITERATION = '''{% for item in missing %}{{ item }}{% endfor %}'''
CONCATENATION = '''{{ missing + [1, 2] + missing + [3] }}'''
def test_silent_defined():
tmpl = silent_env.from_string(DEFINEDUNDEFINED)
assert tmpl.render(given=0) == 'False|True'
def test_complaining_defined():
tmpl = complaining_env.from_string(DEFINEDUNDEFINED)
assert tmpl.render(given=0) == 'False|True'
def test_silent_rendering():
tmpl = silent_env.from_string(JUSTUNDEFINED)
assert tmpl.render() == ''
def test_complaining_undefined():
tmpl = complaining_env.from_string(JUSTUNDEFINED)
try:
tmpl.render()
except TemplateRuntimeError:
pass
else:
raise ValueError('template runtime error expected')
def test_silent_iteration():
tmpl = silent_env.from_string(ITERATION)
assert tmpl.render() == ''
def test_complaining_iteration():
tmpl = complaining_env.from_string(ITERATION)
try:
tmpl.render()
except TemplateRuntimeError:
pass
else:
raise ValueError('template runtime error expected')
def test_concatenation():
tmpl = silent_env.from_string(CONCATENATION)
assert tmpl.render() == '[1, 2, 3]'