diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-03-02 22:33:04 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-03-02 22:33:04 +0000 |
commit | 16326e69035fd606dd563eaf322033304da8c20c (patch) | |
tree | 738898c127821c01a33dec750e65813876cf791a /test/test_template.py | |
parent | cb39883106567571d337ad5cb862de00f5e3a336 (diff) | |
download | mako-16326e69035fd606dd563eaf322033304da8c20c.tar.gz |
begin to modernize testing. in particular, get rid of test_htdocs as well as ad-hoc
HTML file writing, consistently cleanup the modules/cache directories, use
nose skiptests for unsupported features.
Diffstat (limited to 'test/test_template.py')
-rw-r--r-- | test/test_template.py | 425 |
1 files changed, 240 insertions, 185 deletions
diff --git a/test/test_template.py b/test/test_template.py index f5ee121..8b6b7d2 100644 --- a/test/test_template.py +++ b/test/test_template.py @@ -4,101 +4,88 @@ from mako.template import Template, ModuleTemplate from mako.lookup import TemplateLookup from mako.ext.preprocessors import convert_comments from mako import exceptions -import unittest, re, os +import re, os from util import flatten_result, result_lines import codecs -if not os.access('./test_htdocs', os.F_OK): - os.mkdir('./test_htdocs') -if not os.access('./test_htdocs/subdir', os.F_OK): - os.mkdir('./test_htdocs/subdir') +from test import TemplateTest, eq_, template_base, module_base, skip_if -# TODO: all these need to become static files in source control - -file('./test_htdocs/unicode.html', 'w').write("""## -*- coding: utf-8 -*- -Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""") - -file('./test_htdocs/unicode_code.html', 'w').write("""## -*- coding: utf-8 -*- -<% - x = u"drôle de petit voix m’a réveillé." -%> -% if x==u"drôle de petit voix m’a réveillé.": - hi, ${x} -% endif -""") - -file('./test_htdocs/unicode_syntax_error.html', 'w').write("""## -*- coding: utf-8 -*- -<% print 'Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! » %>""") - -file('./test_htdocs/unicode_expr.html', 'w').write("""## -*- coding: utf-8 -*- -${u"Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »"} -""") - -file('./test_htdocs/unicode_runtime_error.html', 'w').write("""## -*- coding: utf-8 -*- -<% print 'Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »' + int(5/0) %>""") - -file('./test_htdocs/bommagic.html', 'w').write(codecs.BOM_UTF8 + """## -*- coding: utf-8 -*- -Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""") -file('./test_htdocs/badbom.html', 'w').write(codecs.BOM_UTF8 + """## -*- coding: ascii -*- -Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""") -file('./test_htdocs/bom.html', 'w').write(codecs.BOM_UTF8 + """Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""") - -# TODO: all these tests need to derive from the -# file based tests, and run in an automated fashion. -# everything here needs to be tested as file template + memory template -class EncodingTest(unittest.TestCase): +class EncodingTest(TemplateTest): def test_unicode(self): - template = Template(u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""") - assert template.render_unicode() == u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" + self._do_memory_test( + u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit 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 petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" + ) def test_encoding_doesnt_conflict(self): - template = Template(u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""", output_encoding='utf-8') - assert template.render_unicode() == u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" + self._do_memory_test( + u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit 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 petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""", + output_encoding='utf-8' + ) def test_unicode_arg(self): val = u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" - template = Template("${val}") - assert template.render_unicode(val=val) == u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit 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 petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""", + template_args={'val':val} + ) def test_unicode_file(self): - template = Template(filename='./test_htdocs/unicode.html', module_directory='./test_htdocs') - assert template.render_unicode() == u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" + self._do_file_test( + "unicode.html", + u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" + ) def test_unicode_file_code(self): - template = Template(filename='./test_htdocs/unicode_code.html', module_directory='./test_htdocs') - assert flatten_result(template.render_unicode()) == u"""hi, drôle de petit voix m’a réveillé.""" + self._do_file_test( + 'unicode_code.html', + u"""hi, drôle de petit voix m’a réveillé.""", + filters=flatten_result + ) def test_unicode_file_lookup(self): - lookup = TemplateLookup(directories=['./test_htdocs'], output_encoding='utf-8', default_filters=['decode.utf8']) + lookup = TemplateLookup( + directories=[template_base], + output_encoding='utf-8', + default_filters=['decode.utf8']) template = lookup.get_template('/chs_unicode.html') - assert flatten_result(template.render(name='毛泽东')) == '毛泽东 是 新中国的主席<br/> Welcome 你 to 北京.' + eq_( + flatten_result(template.render(name='毛泽东')), + '毛泽东 是 新中国的主席<br/> Welcome 你 to 北京.' + ) def test_unicode_bom(self): - template = Template(filename='./test_htdocs/bom.html', module_directory='./test_htdocs') - assert template.render_unicode() == u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" - - template = Template(filename='./test_htdocs/bommagic.html', module_directory='./test_htdocs') - assert template.render_unicode() == u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" - - try: - template = Template(filename='./test_htdocs/badbom.html', module_directory='./test_htdocs') - assert False - except exceptions.CompileException: - assert True + self._do_file_test( + 'bom.html', + u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" + ) + + self._do_file_test( + 'bommagic.html', + u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" + ) + + self.assertRaises( + exceptions.CompileException, + Template, filename=self._file_path('badbom.html'), + module_directory=module_base + ) def test_unicode_memory(self): val = u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" - val = "## coding: utf-8\n" + val.encode('utf-8') - template = Template(val) - assert isinstance(template.code, unicode) - assert template.render_unicode() == u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit 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 petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" + ) def test_unicode_text(self): val = u"""<%text>Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »</%text>""" - val = "## -*- coding: utf-8 -*-\n" + val.encode('utf-8') - template = Template(val) - #print template.code - assert template.render_unicode() == u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit 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 petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" + ) def test_unicode_text_ccall(self): val = u""" @@ -108,106 +95,155 @@ class EncodingTest(unittest.TestCase): <%call expr="foo()"> <%text>Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »</%text> </%call>""" - val = "## -*- coding: utf-8 -*-\n" + val.encode('utf-8') - template = Template(val) - #print template.code - assert flatten_result(template.render_unicode()) == u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit 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 petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""", + filters=flatten_result + ) def test_unicode_literal_in_expr(self): - template = Template(u"""## -*- coding: utf-8 -*- - ${u"Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »"} - """.encode('utf-8')) - assert template.render_unicode().strip() == u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" + self._do_memory_test( + u"""## -*- coding: utf-8 -*- + ${u"Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit 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 petit 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): - template = Template(filename='./test_htdocs/unicode_expr.html', module_directory='./test_htdocs') - - assert template.render_unicode().strip() == u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" + self._do_file_test( + 'unicode_expr.html', + u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""", + lambda t:t.strip() + ) def test_unicode_literal_in_code(self): - template = Template(u"""## -*- coding: utf-8 -*- - <% - context.write(u"Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »") - %> - """.encode('utf-8')) - assert template.render_unicode().strip() == u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" - + 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 petit 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 petit 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): - template = Template(u"""## -*- coding: utf-8 -*- - <% - x = u"drôle de petit voix m’a réveillé." - %> - % if x==u"drôle de petit voix m’a réveillé.": - hi, ${x} - % endif - """.encode('utf-8')) - assert template.render_unicode().strip() == u"""hi, drôle de petit voix m’a réveillé.""" + self._do_memory_test( + u"""## -*- coding: utf-8 -*- + <% + x = u"drôle de petit voix m’a réveillé." + %> + % if x==u"drôle de petit voix m’a réveillé.": + hi, ${x} + % endif + """.encode('utf-8'), + u"""hi, drôle de petit voix m’a réveillé.""", + filters=lambda s:s.strip(), + ) def test_unicode_literal_in_def(self): - template = Template(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')) - assert flatten_result(template.render_unicode()) == u"""Foo: árvíztűrő tükörfúrógép Bar: ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP""" + 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 + ) - template = Template(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')) - assert flatten_result(template.render_unicode()) == u"""Foo: árvíztűrő tükörfúrógép Bar: ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP""" + 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 + ) def test_input_encoding(self): - """test the 'input_encoding' flag on Template, and that unicode objects arent double-decoded""" - s2 = u"hello ${f(u'śląsk')}" - res = Template(s2, input_encoding='utf-8').render_unicode(f=lambda x:x) - assert res == u"hello śląsk" - - s2 = u"## -*- coding: utf-8 -*-\nhello ${f(u'śląsk')}" - res = Template(s2).render_unicode(f=lambda x:x) - assert res == u"hello śląsk" + """test the 'input_encoding' flag on Template, and that unicode + objects arent double-decoded""" + + 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( + u"## -*- coding: utf-8 -*-\nhello ${f(u'śląsk')}", + u"hello śląsk", + template_args={'f':lambda x:x} + ) def test_raw_strings(self): """test that raw strings go straight thru with default_filters turned off""" - g = 'śląsk' - s = u"## -*- coding: utf-8 -*-\nhello ${x}" - t = Template(s, default_filters=[]) - y = t.render(x=g) - assert y == "hello śląsk" + + self._do_memory_test( + u"## -*- coding: utf-8 -*-\nhello ${x}", + "hello śląsk", + default_filters=[], + template_args={'x':'śląsk'}, + unicode_=False + ) # now, the way you *should* be doing it.... - q = g.decode('utf-8') - y = t.render_unicode(x=q) - assert y == u"hello śląsk" + self._do_memory_test( + u"## -*- coding: utf-8 -*-\nhello ${x}", + u"hello śląsk", + template_args={'x':u'śląsk'} + ) def test_encoding(self): - val = u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""" - template = Template(val, output_encoding='utf-8') - assert template.render() == val.encode('utf-8') + self._do_memory_test( + u"""Alors vous imaginez ma surprise, au lever du jour, quand une drôle de petit 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 petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »""".encode('utf-8'), + output_encoding='utf-8', + unicode_=False + ) def test_encoding_errors(self): - val = u"""KGB (transliteration of "КГБ") is the Russian-language abbreviation for Committee for State Security, (Russian: Комит́ет Госуд́арственной Безоп́асности (help·info); Komitet Gosudarstvennoy Bezopasnosti)""" - template = Template(val, output_encoding='iso-8859-1', encoding_errors='replace') - assert template.render() == val.encode('iso-8859-1', 'replace') + 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: Комит́ет Госуд́арственной Безоп́асности (help·info); Komitet Gosudarstvennoy Bezopasnosti)""".encode('iso-8859-1', 'replace'), + output_encoding='iso-8859-1', encoding_errors='replace', + unicode_=False + ) def test_read_unicode(self): - lookup = TemplateLookup(directories=['./test_htdocs'], filesystem_checks=True, output_encoding='utf-8') + lookup = TemplateLookup(directories=[template_base], + filesystem_checks=True, output_encoding='utf-8') template = lookup.get_template('/read_unicode.html') - data = template.render(path=os.path.join('./test_htdocs', 'internationalization.html')) + data = template.render(path=self._file_path('internationalization.html')) def test_bytestring_passthru(self): - lookup = TemplateLookup(directories=['./test_htdocs'], default_filters=[], disable_unicode=True) - template = lookup.get_template('/chs_utf8.html') - self.assertEquals(flatten_result(template.render(name='毛泽东')), '毛泽东 是 新中国的主席<br/> Welcome 你 to 北京. Welcome 你 to 北京.') - - lookup = TemplateLookup(directories=['./test_htdocs'], disable_unicode=True) - template = lookup.get_template('/chs_utf8.html') - self.assertEquals(flatten_result(template.render(name='毛泽东')), '毛泽东 是 新中国的主席<br/> Welcome 你 to 北京. Welcome 你 to 北京.') - + self._do_file_test( + 'chs_utf8.html', + '毛泽东 是 新中国的主席<br/> Welcome 你 to 北京. Welcome 你 to 北京.', + default_filters=[], + disable_unicode=True, + template_args={'name':'毛泽东'}, + filters=flatten_result, + unicode_=False + ) + + self._do_file_test( + 'chs_utf8.html', + '毛泽东 是 新中国的主席<br/> Welcome 你 to 北京. Welcome 你 to 北京.', + disable_unicode=True, + template_args={'name':'毛泽东'}, + filters=flatten_result, + unicode_=False + ) + + template = self._file_template('chs_utf8.html', 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 petit voix m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »'}""", disable_unicode=True, input_encoding='utf-8') @@ -216,7 +252,7 @@ class EncodingTest(unittest.TestCase): self.assertRaises(UnicodeDecodeError, template.render) # raises because expression contains an encoded bytestring which cannot be decoded -class PageArgsTest(unittest.TestCase): +class PageArgsTest(TemplateTest): def test_basic(self): template = Template(""" <%page args="x, y, z=7"/> @@ -287,7 +323,7 @@ class PageArgsTest(unittest.TestCase): """) assert flatten_result(template.render()) == "dict: this is dict locals: this is locals" -class IncludeTest(unittest.TestCase): +class IncludeTest(TemplateTest): def test_basic(self): lookup = TemplateLookup() lookup.put_string("a", """ @@ -354,7 +390,7 @@ class IncludeTest(unittest.TestCase): """) assert flatten_result(lookup.get_template("c").render()) == "bar: calling bar this is a" -class ControlTest(unittest.TestCase): +class ControlTest(TemplateTest): def test_control(self): t = Template(""" ## this is a template. @@ -382,23 +418,29 @@ class ControlTest(unittest.TestCase): #print t.code assert flatten_result(t.render()) == "1 2 3" -class GlobalsTest(unittest.TestCase): +class GlobalsTest(TemplateTest): def test_globals(self): - t= Template(""" - <%! - y = "hi" - %> - y is ${y} -""") - assert t.render().strip() == "y is hi" - -class RichTracebackTest(unittest.TestCase): + self._do_memory_test( + """ + <%! + y = "hi" + %> + y is ${y} + """, + "y is hi", + filters=lambda t:t.strip() + ) + +class RichTracebackTest(TemplateTest): + def _do_test_traceback(self, utf8, memory, syntax): if memory: if syntax: - source = u'## coding: utf-8\n<% print "m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! » %>' + source = u'## coding: utf-8\n<% print "m’a réveillé. '\ + u'Elle disait: « S’il vous plaît… dessine-moi un mouton! » %>' else: - source = u'## coding: utf-8\n<% print u"m’a réveillé. Elle disait: « S’il vous plaît… dessine-moi un mouton! »" + str(5/0) %>' + source = u'## coding: utf-8\n<% print u"m’a réveillé. '\ + u'Elle disait: « S’il vous plaît… dessine-moi un mouton! »" + str(5/0) %>' if utf8: source = source.encode('utf-8') else: @@ -406,13 +448,13 @@ class RichTracebackTest(unittest.TestCase): templateargs = {'text':source} else: if syntax: - filename = './test_htdocs/unicode_syntax_error.html' + filename = 'unicode_syntax_error.html' else: - filename = './test_htdocs/unicode_runtime_error.html' - source = file(filename).read() + filename = 'unicode_runtime_error.html' + source = file(self._file_path(filename)).read() if not utf8: source = source.decode('utf-8') - templateargs = {'filename':filename} + templateargs = {'filename':self._file_path(filename)} try: template = Template(**templateargs) if not syntax: @@ -430,35 +472,48 @@ for utf8 in (True, False): for syntax in (True, False): def _do_test(self): self._do_test_traceback(utf8, memory, syntax) - name = 'test_%s_%s_%s' % (utf8 and 'utf8' or 'unicode', memory and 'memory' or 'file', syntax and 'syntax' or 'runtime') - try: - _do_test.__name__ = name - except: - pass + name = 'test_%s_%s_%s' % (utf8 and 'utf8' or 'unicode', + memory and 'memory' or 'file', + syntax and 'syntax' or 'runtime') + _do_test.__name__ = name setattr(RichTracebackTest, name, _do_test) del _do_test - -class ModuleDirTest(unittest.TestCase): +class ModuleDirTest(TemplateTest): def test_basic(self): - file('./test_htdocs/modtest.html', 'w').write("""this is a test""") - file('./test_htdocs/subdir/modtest.html', 'w').write("""this is a test""") - t = Template(filename='./test_htdocs/modtest.html', module_directory='./test_htdocs/modules') - t2 = Template(filename='./test_htdocs/subdir/modtest.html', module_directory='./test_htdocs/modules') - assert t.module.__file__ == os.path.abspath('./test_htdocs/modules/test_htdocs/modtest.html.py') - assert t2.module.__file__ == os.path.abspath('./test_htdocs/modules/test_htdocs/subdir/modtest.html.py') + t = self._file_template("modtest.html") + t2 = self._file_template('subdir/modtest.html') + + eq_( + t.module.__file__, + os.path.join(module_base, 'modtest.html.py') + ) + eq_( + t2.module.__file__, + os.path.join(module_base, 'subdir', 'modtest.html.py') + ) + def test_callable(self): - file('./test_htdocs/modtest.html', 'w').write("""this is a test""") - file('./test_htdocs/subdir/modtest.html', 'w').write("""this is a test""") def get_modname(filename, uri): - return os.path.dirname(filename) + "/foo/" + os.path.basename(filename) + ".py" - lookup = TemplateLookup('./test_htdocs', modulename_callable=get_modname) + return os.path.join( + module_base, + os.path.dirname(uri)[1:], + 'foo', + os.path.basename(filename) + ".py") + + lookup = TemplateLookup(template_base, modulename_callable=get_modname) t = lookup.get_template('/modtest.html') t2 = lookup.get_template('/subdir/modtest.html') - assert t.module.__file__ == 'test_htdocs/foo/modtest.html.py' - assert t2.module.__file__ == 'test_htdocs/subdir/foo/modtest.html.py' - -class ModuleTemplateTest(unittest.TestCase): + eq_( + t.module.__file__, + os.path.join(module_base, 'foo', 'modtest.html.py') + ) + eq_( + t2.module.__file__, + os.path.join(module_base, 'subdir', 'foo', 'modtest.html.py') + ) + +class ModuleTemplateTest(TemplateTest): def test_module_roundtrip(self): lookup = TemplateLookup() @@ -494,7 +549,7 @@ class ModuleTemplateTest(unittest.TestCase): ] -class PreprocessTest(unittest.TestCase): +class PreprocessTest(TemplateTest): def test_old_comments(self): t = Template(""" im a template |