summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEtiennePelletier <etpelletier93@hotmail.com>2019-05-09 16:50:47 -0400
committerDavid Lord <davidism@gmail.com>2019-10-04 08:25:36 -0700
commit69d8d9886044c509afed3fed5994a987f99fad42 (patch)
treef03955546a8890efc0f0b4a83b426862f9184c7c
parent53a5d0aa4436455b64e78fe1229e53e65cf1e789 (diff)
downloadjinja2-69d8d9886044c509afed3fed5994a987f99fad42.tar.gz
Add tests for Undefined classes
-rw-r--r--tests/test_api.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/test_api.py b/tests/test_api.py
index c8e2139..343d1de 100644
--- a/tests/test_api.py
+++ b/tests/test_api.py
@@ -270,6 +270,13 @@ class TestUndefined(object):
assert env.from_string('{{ not missing }}').render() == 'True'
pytest.raises(UndefinedError,
env.from_string('{{ missing - 1}}').render)
+ und1 = Undefined(name='x')
+ und2 = Undefined(name='y')
+ assert und1 == und2
+ assert und1 != 42
+ assert hash(und1) == hash(und2) == hash(Undefined())
+ with pytest.raises(AttributeError):
+ getattr(Undefined, '__slots__')
def test_chainable_undefined(self):
env = Environment(undefined=ChainableUndefined)
@@ -282,6 +289,8 @@ class TestUndefined(object):
assert env.from_string('{{ not missing }}').render() == 'True'
pytest.raises(UndefinedError,
env.from_string('{{ missing - 1}}').render)
+ with pytest.raises(AttributeError):
+ getattr(ChainableUndefined, '__slots__')
# The following tests ensure subclass functionality works as expected
assert env.from_string('{{ missing.bar["baz"] }}').render() == u''
@@ -303,6 +312,10 @@ class TestUndefined(object):
assert env.from_string('{{ foo.missing }}').render(foo=42) \
== u"{{ no such element: int object['missing'] }}"
assert env.from_string('{{ not missing }}').render() == 'True'
+ undefined_hint = 'this is testing undefined hint of DebugUndefined'
+ assert str(DebugUndefined(hint=undefined_hint)) == u'{{ undefined value printed: %s }}' % undefined_hint
+ with pytest.raises(AttributeError):
+ getattr(DebugUndefined, '__slots__')
def test_strict_undefined(self):
env = Environment(undefined=StrictUndefined)
@@ -319,6 +332,8 @@ class TestUndefined(object):
env.from_string('{{ not missing }}').render)
assert env.from_string('{{ missing|default("default", true) }}')\
.render() == 'default'
+ with pytest.raises(AttributeError):
+ getattr(StrictUndefined, '__slots__')
def test_indexing_gives_undefined(self):
t = Template("{{ var[42].foo }}")