Armin Ronacher | 44fb2e1 | 2007-04-29 09:45:00 +0200 | [diff] [blame] | 1 | # -*- coding: utf-8 -*- |
| 2 | """ |
Armin Ronacher | f41d139 | 2008-04-18 16:41:52 +0200 | [diff] [blame] | 3 | unit test for the undefined types |
| 4 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
Armin Ronacher | 44fb2e1 | 2007-04-29 09:45:00 +0200 | [diff] [blame] | 5 | |
Armin Ronacher | f41d139 | 2008-04-18 16:41:52 +0200 | [diff] [blame] | 6 | :copyright: 2008 by Armin Ronacher. |
Armin Ronacher | 44fb2e1 | 2007-04-29 09:45:00 +0200 | [diff] [blame] | 7 | :license: BSD, see LICENSE for more details. |
| 8 | """ |
| 9 | |
Armin Ronacher | 44fb2e1 | 2007-04-29 09:45:00 +0200 | [diff] [blame] | 10 | |
Armin Ronacher | f41d139 | 2008-04-18 16:41:52 +0200 | [diff] [blame] | 11 | test_default_undefined = ''' |
| 12 | >>> from jinja2 import Environment, Undefined |
| 13 | >>> env = Environment(undefined=Undefined) |
| 14 | >>> env.from_string('{{ missing }}').render() |
| 15 | u'' |
| 16 | >>> env.from_string('{{ missing.attribute }}').render() |
| 17 | Traceback (most recent call last): |
| 18 | ... |
| 19 | UndefinedError: 'missing' is undefined |
| 20 | >>> env.from_string('{{ missing|list }}').render() |
| 21 | u'[]' |
| 22 | >>> env.from_string('{{ missing is not defined }}').render() |
| 23 | u'True' |
| 24 | >>> env.from_string('{{ foo.missing }}').render(foo=42) |
| 25 | u'' |
| 26 | >>> env.from_string('{{ not missing }}').render() |
| 27 | u'True' |
| 28 | ''' |
Armin Ronacher | 44fb2e1 | 2007-04-29 09:45:00 +0200 | [diff] [blame] | 29 | |
Armin Ronacher | f41d139 | 2008-04-18 16:41:52 +0200 | [diff] [blame] | 30 | test_debug_undefined = ''' |
| 31 | >>> from jinja2 import Environment, DebugUndefined |
| 32 | >>> env = Environment(undefined=DebugUndefined) |
| 33 | >>> env.from_string('{{ missing }}').render() |
| 34 | u'{{ missing }}' |
| 35 | >>> env.from_string('{{ missing.attribute }}').render() |
| 36 | Traceback (most recent call last): |
| 37 | ... |
| 38 | UndefinedError: 'missing' is undefined |
| 39 | >>> env.from_string('{{ missing|list }}').render() |
| 40 | u'[]' |
| 41 | >>> env.from_string('{{ missing is not defined }}').render() |
| 42 | u'True' |
| 43 | >>> env.from_string('{{ foo.missing }}').render(foo=42) |
| 44 | u"{{ no such element: int['missing'] }}" |
| 45 | >>> env.from_string('{{ not missing }}').render() |
| 46 | u'True' |
| 47 | ''' |
Armin Ronacher | 44fb2e1 | 2007-04-29 09:45:00 +0200 | [diff] [blame] | 48 | |
Armin Ronacher | f41d139 | 2008-04-18 16:41:52 +0200 | [diff] [blame] | 49 | test_strict_undefined = ''' |
| 50 | >>> from jinja2 import Environment, StrictUndefined |
| 51 | >>> env = Environment(undefined=StrictUndefined) |
| 52 | >>> env.from_string('{{ missing }}').render() |
| 53 | Traceback (most recent call last): |
| 54 | ... |
| 55 | UndefinedError: 'missing' is undefined |
| 56 | >>> env.from_string('{{ missing.attribute }}').render() |
| 57 | Traceback (most recent call last): |
| 58 | ... |
| 59 | UndefinedError: 'missing' is undefined |
| 60 | >>> env.from_string('{{ missing|list }}').render() |
| 61 | Traceback (most recent call last): |
| 62 | ... |
| 63 | UndefinedError: 'missing' is undefined |
| 64 | >>> env.from_string('{{ missing is not defined }}').render() |
| 65 | u'True' |
| 66 | >>> env.from_string('{{ foo.missing }}').render(foo=42) |
| 67 | Traceback (most recent call last): |
| 68 | ... |
| 69 | UndefinedError: 'int' object has no attribute 'missing' |
| 70 | >>> env.from_string('{{ not missing }}').render() |
| 71 | Traceback (most recent call last): |
| 72 | ... |
| 73 | UndefinedError: 'missing' is undefined |
| 74 | ''' |