diff options
Diffstat (limited to 'test/test_template.py')
-rw-r--r-- | test/test_template.py | 462 |
1 files changed, 140 insertions, 322 deletions
diff --git a/test/test_template.py b/test/test_template.py index f9727be..4b0d271 100644 --- a/test/test_template.py +++ b/test/test_template.py @@ -3,11 +3,9 @@ import os import unittest -from mako import compat from mako import exceptions from mako import runtime from mako import util -from mako.compat import u from mako.ext.preprocessors import convert_comments from mako.lookup import TemplateLookup from mako.template import ModuleInfo @@ -17,14 +15,13 @@ from test import assert_raises from test import assert_raises_message from test import eq_ from test import module_base -from test import requires_python_2 from test import template_base from test import TemplateTest from test.util import flatten_result from test.util import result_lines -class ctx(object): +class ctx: def __init__(self, a, b): pass @@ -51,34 +48,23 @@ class EncodingTest(TemplateTest): except: # <h3>Exception: <span style="color:red">Foobar</span></h3> markup = html_error_template().render(full=False, css=False) - if compat.py3k: - assert ( - '<span style="color:red">Foobar</span></h3>'.encode( - "ascii" - ) - not in markup - ) - assert ( - "<span style="color:red"" - ">Foobar</span>".encode("ascii") in markup - ) - else: - assert ( - '<span style="color:red">Foobar</span></h3>' not in markup - ) - assert ( - "<span style="color:red"" - ">Foobar</span>" in markup - ) + assert ( + '<span style="color:red">Foobar</span></h3>'.encode("ascii") + not in markup + ) + assert ( + "<span style="color:red"" + ">Foobar</span>".encode("ascii") in markup + ) def test_unicode(self): self._do_memory_test( - u( + ( "Alors vous imaginez ma surprise, au lever du jour, quand " "une drôle de petite voix m’a réveillé. Elle disait: " "« S’il vous plaît… dessine-moi un mouton! »" ), - u( + ( "Alors vous imaginez ma surprise, au lever du jour, quand " "une drôle de petite voix m’a réveillé. Elle disait: " "« S’il vous plaît… dessine-moi un mouton! »" @@ -87,12 +73,12 @@ class EncodingTest(TemplateTest): def test_encoding_doesnt_conflict(self): self._do_memory_test( - u( + ( "Alors vous imaginez ma surprise, au lever du jour, quand " "une drôle de petite voix m’a réveillé. Elle disait: " "« S’il vous plaît… dessine-moi un mouton! »" ), - u( + ( "Alors vous imaginez ma surprise, au lever du jour, quand " "une drôle de petite voix m’a réveillé. Elle disait: " "« S’il vous plaît… dessine-moi un mouton! »" @@ -101,14 +87,14 @@ class EncodingTest(TemplateTest): ) def test_unicode_arg(self): - val = u( + val = ( "Alors vous imaginez ma surprise, au lever du jour, quand " "une drôle de petite voix m’a réveillé. Elle disait: " "« S’il vous plaît… dessine-moi un mouton! »" ) self._do_memory_test( "${val}", - u( + ( "Alors vous imaginez ma surprise, au lever du jour, quand " "une drôle de petite voix m’a réveillé. Elle disait: " "« S’il vous plaît… dessine-moi un mouton! »" @@ -119,7 +105,7 @@ class EncodingTest(TemplateTest): def test_unicode_file(self): self._do_file_test( "unicode.html", - u( + ( "Alors vous imaginez ma surprise, au lever du jour, quand " "une drôle de petite voix m’a réveillé. Elle disait: " "« S’il vous plaît… dessine-moi un mouton! »" @@ -129,7 +115,7 @@ class EncodingTest(TemplateTest): def test_unicode_file_code(self): self._do_file_test( "unicode_code.html", - u("""hi, drôle de petite voix m’a réveillé."""), + ("""hi, drôle de petite voix m’a réveillé."""), filters=flatten_result, ) @@ -139,19 +125,16 @@ class EncodingTest(TemplateTest): output_encoding="utf-8", default_filters=["decode.utf8"], ) - if compat.py3k: - template = lookup.get_template("/chs_unicode_py3k.html") - else: - template = lookup.get_template("/chs_unicode.html") + template = lookup.get_template("/chs_unicode_py3k.html") eq_( flatten_result(template.render_unicode(name="毛泽东")), - u("毛泽东 是 新中国的主席<br/> Welcome 你 to 北京."), + ("毛泽东 是 新中国的主席<br/> Welcome 你 to 北京."), ) def test_unicode_bom(self): self._do_file_test( "bom.html", - u( + ( "Alors vous imaginez ma surprise, au lever du jour, quand " "une drôle de petite voix m’a réveillé. Elle disait: " "« S’il vous plaît… dessine-moi un mouton! »" @@ -160,7 +143,7 @@ class EncodingTest(TemplateTest): self._do_file_test( "bommagic.html", - u( + ( "Alors vous imaginez ma surprise, au lever du jour, quand " "une drôle de petite voix m’a réveillé. Elle disait: " "« S’il vous plaît… dessine-moi un mouton! »" @@ -175,14 +158,14 @@ class EncodingTest(TemplateTest): ) def test_unicode_memory(self): - val = u( + val = ( "Alors vous imaginez ma surprise, au lever du jour, quand " "une drôle de petite voix m’a réveillé. Elle disait: " "« S’il vous plaît… dessine-moi un mouton! »" ) self._do_memory_test( ("## -*- coding: utf-8 -*-\n" + val).encode("utf-8"), - u( + ( "Alors vous imaginez ma surprise, au lever du jour, quand " "une drôle de petite voix m’a réveillé. Elle disait: " "« S’il vous plaît… dessine-moi un mouton! »" @@ -190,14 +173,14 @@ class EncodingTest(TemplateTest): ) def test_unicode_text(self): - val = u( + val = ( "<%text>Alors vous imaginez ma surprise, au lever du jour, quand " "une drôle de petite voix m’a réveillé. Elle disait: " "« S’il vous plaît… dessine-moi un mouton! »</%text>" ) self._do_memory_test( ("## -*- coding: utf-8 -*-\n" + val).encode("utf-8"), - u( + ( "Alors vous imaginez ma surprise, au lever du jour, quand " "une drôle de petite voix m’a réveillé. Elle disait: " "« S’il vous plaît… dessine-moi un mouton! »" @@ -205,7 +188,7 @@ class EncodingTest(TemplateTest): ) def test_unicode_text_ccall(self): - val = u( + val = ( """ <%def name="foo()"> ${capture(caller.body)} @@ -218,7 +201,7 @@ quand une drôle de petite voix m’a réveillé. Elle disait: ) self._do_memory_test( ("## -*- coding: utf-8 -*-\n" + val).encode("utf-8"), - u( + ( "Alors vous imaginez ma surprise, au lever du jour, quand " "une drôle de petite voix m’a réveillé. Elle disait: " "« S’il vous plaît… dessine-moi un mouton! »" @@ -227,43 +210,26 @@ quand une drôle de petite voix m’a réveillé. Elle disait: ) def test_unicode_literal_in_expr(self): - if compat.py3k: - self._do_memory_test( - u( - "## -*- coding: utf-8 -*-\n" - '${"Alors vous imaginez ma surprise, au lever du jour, ' - "quand une drôle de petite voix m’a réveillé. " - "Elle disait: " - '« S’il vous plaît… dessine-moi un mouton! »"}\n' - ).encode("utf-8"), - u( - "Alors vous imaginez ma surprise, au lever du jour, " - "quand une drôle de petite voix m’a réveillé. " - "Elle disait: « S’il vous plaît… dessine-moi un mouton! »" - ), - filters=lambda s: s.strip(), - ) - else: - self._do_memory_test( - u( - "## -*- coding: utf-8 -*-\n" - '${u"Alors vous imaginez ma surprise, au lever du jour, ' - "quand une drôle de petite voix m’a réveillé. " - "Elle disait: « S’il vous plaît… dessine-moi un " - 'mouton! »"}' - ).encode("utf-8"), - u( - "Alors vous imaginez ma surprise, au lever du jour, " - "quand une drôle de petite voix m’a réveillé. " - "Elle disait: « S’il vous plaît… dessine-moi un mouton! »" - ), - filters=lambda s: s.strip(), - ) + self._do_memory_test( + ( + "## -*- coding: utf-8 -*-\n" + '${"Alors vous imaginez ma surprise, au lever du jour, ' + "quand une drôle de petite voix m’a réveillé. " + "Elle disait: " + '« S’il vous plaît… dessine-moi un mouton! »"}\n' + ).encode("utf-8"), + ( + "Alors vous imaginez ma surprise, au lever du jour, " + "quand une drôle de petite voix m’a réveillé. " + "Elle disait: « S’il vous plaît… dessine-moi un mouton! »" + ), + filters=lambda s: s.strip(), + ) def test_unicode_literal_in_expr_file(self): self._do_file_test( "unicode_expr.html", - u( + ( "Alors vous imaginez ma surprise, au lever du jour, " "quand une drôle de petite voix m’a réveillé. " "Elle disait: « S’il vous plaît… dessine-moi un mouton! »" @@ -272,85 +238,49 @@ quand une drôle de petite voix m’a réveillé. Elle disait: ) def test_unicode_literal_in_code(self): - if compat.py3k: - self._do_memory_test( - u( - """## -*- coding: utf-8 -*- - <% - context.write("Alors vous imaginez ma surprise, au """ - """lever du jour, quand une drôle de petite voix m’a """ - """réveillé. Elle disait: """ - """« S’il vous plaît… dessine-moi un mouton! »") - %> - """ - ).encode("utf-8"), - u( - "Alors vous imaginez ma surprise, au lever du jour, " - "quand une drôle de petite voix m’a réveillé. " - "Elle disait: « S’il vous plaît… dessine-moi un mouton! »" - ), - filters=lambda s: s.strip(), - ) - else: - self._do_memory_test( - u( - """## -*- coding: utf-8 -*- - <% - context.write(u"Alors vous imaginez ma surprise, """ - """au lever du jour, quand une drôle de petite voix """ - """m’a réveillé. Elle disait: « S’il vous plaît… """ - """dessine-moi un mouton! »") - %> - """ - ).encode("utf-8"), - u( - "Alors vous imaginez ma surprise, au lever du jour, " - "quand une drôle de petite voix m’a réveillé. " - "Elle disait: « S’il vous plaît… dessine-moi un mouton! »" - ), - filters=lambda s: s.strip(), - ) + self._do_memory_test( + ( + """## -*- coding: utf-8 -*- + <% + context.write("Alors vous imaginez ma surprise, au """ + """lever du jour, quand une drôle de petite voix m’a """ + """réveillé. Elle disait: """ + """« S’il vous plaît… dessine-moi un mouton! »") + %> + """ + ).encode("utf-8"), + ( + "Alors vous imaginez ma surprise, au lever du jour, " + "quand une drôle de petite voix m’a réveillé. " + "Elle disait: « S’il vous plaît… dessine-moi un mouton! »" + ), + filters=lambda s: s.strip(), + ) def test_unicode_literal_in_controlline(self): - if compat.py3k: - self._do_memory_test( - u( - """## -*- coding: utf-8 -*- - <% - x = "drôle de petite voix m’a réveillé." - %> - % if x=="drôle de petite voix m’a réveillé.": - hi, ${x} - % endif - """ - ).encode("utf-8"), - u("""hi, drôle de petite voix m’a réveillé."""), - filters=lambda s: s.strip(), - ) - else: - self._do_memory_test( - u( - """## -*- coding: utf-8 -*- - <% - x = u"drôle de petite voix m’a réveillé." - %> - % if x==u"drôle de petite voix m’a réveillé.": - hi, ${x} - % endif - """ - ).encode("utf-8"), - u("""hi, drôle de petite voix m’a réveillé."""), - filters=lambda s: s.strip(), - ) + self._do_memory_test( + ( + """## -*- coding: utf-8 -*- + <% + x = "drôle de petite voix m’a réveillé." + %> + % if x=="drôle de petite voix m’a réveillé.": + hi, ${x} + % endif + """ + ).encode("utf-8"), + ("""hi, drôle de petite voix m’a réveillé."""), + filters=lambda s: s.strip(), + ) def test_unicode_literal_in_tag(self): self._do_file_test( "unicode_arguments.html", [ - u("x is: drôle de petite voix m’a réveillé"), - u("x is: drôle de petite voix m’a réveillé"), - u("x is: drôle de petite voix m’a réveillé"), - u("x is: drôle de petite voix m’a réveillé"), + ("x is: drôle de petite voix m’a réveillé"), + ("x is: drôle de petite voix m’a réveillé"), + ("x is: drôle de petite voix m’a réveillé"), + ("x is: drôle de petite voix m’a réveillé"), ], filters=result_lines, ) @@ -358,116 +288,66 @@ quand une drôle de petite voix m’a réveillé. Elle disait: self._do_memory_test( util.read_file(self._file_path("unicode_arguments.html")), [ - u("x is: drôle de petite voix m’a réveillé"), - u("x is: drôle de petite voix m’a réveillé"), - u("x is: drôle de petite voix m’a réveillé"), - u("x is: drôle de petite voix m’a réveillé"), + ("x is: drôle de petite voix m’a réveillé"), + ("x is: drôle de petite voix m’a réveillé"), + ("x is: drôle de petite voix m’a réveillé"), + ("x is: drôle de petite voix m’a réveillé"), ], filters=result_lines, ) def test_unicode_literal_in_def(self): - if compat.py3k: - self._do_memory_test( - u( - """## -*- coding: utf-8 -*- - <%def name="bello(foo, bar)"> - Foo: ${ foo } - Bar: ${ bar } - </%def> - <%call expr="bello(foo='árvíztűrő tükörfúrógép', """ - """bar='ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP')"> - </%call>""" - ).encode("utf-8"), - u( - """Foo: árvíztűrő tükörfúrógép """ - """Bar: ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP""" - ), - filters=flatten_result, - ) - - self._do_memory_test( - u( - "## -*- coding: utf-8 -*-\n" - """<%def name="hello(foo='árvíztűrő tükörfúrógép', """ - """bar='ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP')">\n""" - "Foo: ${ foo }\n" - "Bar: ${ bar }\n" - "</%def>\n" - "${ hello() }" - ).encode("utf-8"), - u( - """Foo: árvíztűrő tükörfúrógép Bar: """ - """ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP""" - ), - filters=flatten_result, - ) - else: - self._do_memory_test( - u( - """## -*- coding: utf-8 -*- - <%def name="bello(foo, bar)"> - Foo: ${ foo } - Bar: ${ bar } - </%def> - <%call expr="bello(foo=u'árvíztűrő tükörfúrógép', """ - """bar=u'ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP')"> - </%call>""" - ).encode("utf-8"), - u( - """Foo: árvíztűrő tükörfúrógép Bar: """ - """ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP""" - ), - filters=flatten_result, - ) + self._do_memory_test( + ( + """## -*- coding: utf-8 -*- + <%def name="bello(foo, bar)"> + Foo: ${ foo } + Bar: ${ bar } + </%def> + <%call expr="bello(foo='árvíztűrő tükörfúrógép', """ + """bar='ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP')"> + </%call>""" + ).encode("utf-8"), + ( + """Foo: árvíztűrő tükörfúrógép """ + """Bar: ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP""" + ), + filters=flatten_result, + ) - self._do_memory_test( - u( - """## -*- coding: utf-8 -*- - <%def name="hello(foo=u'árvíztűrő tükörfúrógép', """ - """bar=u'ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP')"> - Foo: ${ foo } - Bar: ${ bar } - </%def> - ${ hello() }""" - ).encode("utf-8"), - u( - """Foo: árvíztűrő tükörfúrógép Bar: """ - """ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP""" - ), - filters=flatten_result, - ) + self._do_memory_test( + ( + "## -*- coding: utf-8 -*-\n" + """<%def name="hello(foo='árvíztűrő tükörfúrógép', """ + """bar='ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP')">\n""" + "Foo: ${ foo }\n" + "Bar: ${ bar }\n" + "</%def>\n" + "${ hello() }" + ).encode("utf-8"), + ( + """Foo: árvíztűrő tükörfúrógép Bar: """ + """ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP""" + ), + filters=flatten_result, + ) def test_input_encoding(self): """test the 'input_encoding' flag on Template, and that unicode objects arent double-decoded""" - if compat.py3k: - self._do_memory_test( - u("hello ${f('śląsk')}"), - u("hello śląsk"), - input_encoding="utf-8", - template_args={"f": lambda x: x}, - ) - - self._do_memory_test( - u("## -*- coding: utf-8 -*-\nhello ${f('śląsk')}"), - u("hello śląsk"), - template_args={"f": lambda x: x}, - ) - else: - self._do_memory_test( - u("hello ${f(u'śląsk')}"), - u("hello śląsk"), - input_encoding="utf-8", - template_args={"f": lambda x: x}, - ) + self._do_memory_test( + ("hello ${f('śląsk')}"), + ("hello śląsk"), + input_encoding="utf-8", + template_args={"f": lambda x: x}, + ) - self._do_memory_test( - u("## -*- coding: utf-8 -*-\nhello ${f(u'śląsk')}"), - u("hello śląsk"), - template_args={"f": lambda x: x}, - ) + self._do_memory_test( + ("## -*- coding: utf-8 -*-\nhello ${f('śląsk')}"), + ("hello śląsk"), + template_args={"f": lambda x: x}, + ) def test_raw_strings(self): """test that raw strings go straight thru with default_filters @@ -476,7 +356,7 @@ quand une drôle de petite voix m’a réveillé. Elle disait: """ self._do_memory_test( - u("## -*- coding: utf-8 -*-\nhello ${x}"), + ("## -*- coding: utf-8 -*-\nhello ${x}"), "hello śląsk", default_filters=[], template_args={"x": "śląsk"}, @@ -487,19 +367,19 @@ quand une drôle de petite voix m’a réveillé. Elle disait: # now, the way you *should* be doing it.... self._do_memory_test( - u("## -*- coding: utf-8 -*-\nhello ${x}"), - u("hello śląsk"), - template_args={"x": u("śląsk")}, + ("## -*- coding: utf-8 -*-\nhello ${x}"), + ("hello śląsk"), + template_args={"x": ("śląsk")}, ) def test_encoding(self): self._do_memory_test( - u( + ( "Alors vous imaginez ma surprise, au lever du jour, quand " "une drôle de petite voix m’a réveillé. Elle disait: " "« S’il vous plaît… dessine-moi un mouton! »" ), - u( + ( "Alors vous imaginez ma surprise, au lever du jour, quand " "une drôle de petite voix m’a réveillé. Elle disait: " "« S’il vous plaît… dessine-moi un mouton! »" @@ -510,13 +390,13 @@ quand une drôle de petite voix m’a réveillé. Elle disait: def test_encoding_errors(self): self._do_memory_test( - u( + ( """KGB (transliteration of "КГБ") is the Russian-language """ """abbreviation for Committee for State Security, """ """(Russian: Комит́ет Госуд́арственной Безоп́асности """ """(help·info); Komitet Gosudarstvennoy Bezopasnosti)""" ), - u( + ( """KGB (transliteration of "КГБ") is the Russian-language """ """abbreviation for Committee for State Security, """ """(Russian: Комит́ет Госуд́арственной Безоп́асности """ @@ -533,75 +413,13 @@ quand une drôle de petite voix m’a réveillé. Elle disait: filesystem_checks=True, output_encoding="utf-8", ) - if compat.py3k: - template = lookup.get_template("/read_unicode_py3k.html") - else: - template = lookup.get_template("/read_unicode.html") + template = lookup.get_template("/read_unicode_py3k.html") # TODO: I've no idea what encoding this file is, Python 3.1.2 # won't read the file even with open(...encoding='utf-8') unless # errors is specified. or if there's some quirk in 3.1.2 # since I'm pretty sure this test worked with py3k when I wrote it. template.render(path=self._file_path("internationalization.html")) - @requires_python_2 - def test_bytestring_passthru(self): - self._do_file_test( - "chs_utf8.html", - "毛泽东 是 新中国的主席<br/> Welcome 你 to 北京. Welcome 你 to 北京.", - default_filters=[], - disable_unicode=True, - output_encoding=None, - template_args={"name": "毛泽东"}, - filters=flatten_result, - unicode_=False, - ) - - self._do_file_test( - "chs_utf8.html", - "毛泽东 是 新中国的主席<br/> Welcome 你 to 北京. Welcome 你 to 北京.", - disable_unicode=True, - output_encoding=None, - template_args={"name": "毛泽东"}, - filters=flatten_result, - unicode_=False, - ) - - template = self._file_template( - "chs_utf8.html", output_encoding=None, disable_unicode=True - ) - self.assertRaises( - UnicodeDecodeError, template.render_unicode, name="毛泽东" - ) - - template = Template( - "${'Alors vous imaginez ma surprise, au lever" - " du jour, quand une drôle de petite voix m’a " - "réveillé. Elle disait: « S’il vous plaît… " - "dessine-moi un mouton! »'}", - output_encoding=None, - disable_unicode=True, - input_encoding="utf-8", - ) - assert ( - template.render() == "Alors vous imaginez ma surprise, " - "au lever du jour, quand une drôle de petite " - "voix m’a réveillé. Elle disait: « S’il vous " - "plaît… dessine-moi un mouton! »" - ) - template = Template( - "${'Alors vous imaginez ma surprise, au " - "lever du jour, quand une drôle de petite " - "voix m’a réveillé. Elle disait: « S’il " - "vous plaît… dessine-moi un mouton! »'}", - input_encoding="utf8", - output_encoding="utf8", - disable_unicode=False, - default_filters=[], - ) - # raises because expression contains an encoded bytestring which cannot - # be decoded - self.assertRaises(UnicodeDecodeError, template.render) - class PageArgsTest(TemplateTest): def test_basic(self): @@ -1094,7 +912,7 @@ class ReservedNameTest(TemplateTest): exceptions.NameConflictError, r"Reserved words passed to render\(\): %s" % name, Template("x").render, - **{name: "foo"} + **{name: "foo"}, ) def test_names_in_template(self): @@ -1361,13 +1179,13 @@ class RichTracebackTest(TemplateTest): if memory: if syntax: - source = u( + source = ( '## coding: utf-8\n<% print "m’a réveillé. ' "Elle disait: « S’il vous plaît… dessine-moi " "un mouton! » %>" ) else: - source = u( + source = ( '## coding: utf-8\n<% print u"m’a réveillé. ' "Elle disait: « S’il vous plaît… dessine-moi un " 'mouton! »" + str(5/0) %>' @@ -1817,7 +1635,7 @@ class LexerTest(TemplateTest): def _fixture(self): from mako.parsetree import TemplateNode, Text - class MyLexer(object): + class MyLexer: encoding = "ascii" def __init__(self, *arg, **kw): |