diff options
author | EtiennePelletier <etpelletier93@hotmail.com> | 2019-05-09 16:50:47 -0400 |
---|---|---|
committer | David Lord <davidism@gmail.com> | 2019-10-04 08:25:36 -0700 |
commit | 69d8d9886044c509afed3fed5994a987f99fad42 (patch) | |
tree | f03955546a8890efc0f0b4a83b426862f9184c7c | |
parent | 53a5d0aa4436455b64e78fe1229e53e65cf1e789 (diff) | |
download | jinja2-69d8d9886044c509afed3fed5994a987f99fad42.tar.gz |
Add tests for Undefined classes
-rw-r--r-- | tests/test_api.py | 15 |
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 }}") |