comparison genshi/template/tests/text.py @ 902:09cc3627654c experimental-inline

Sync `experimental/inline` branch with [source:trunk@1126].
author cmlenz
date Fri, 23 Apr 2010 21:08:26 +0000
parents 1837f39efd6f
children
comparison
equal deleted inserted replaced
830:de82830f8816 902:09cc3627654c
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 # 2 #
3 # Copyright (C) 2006-2008 Edgewall Software 3 # Copyright (C) 2006-2009 Edgewall Software
4 # All rights reserved. 4 # All rights reserved.
5 # 5 #
6 # This software is licensed as described in the file COPYING, which 6 # This software is licensed as described in the file COPYING, which
7 # you should have received as part of this distribution. The terms 7 # you should have received as part of this distribution. The terms
8 # are also available at http://genshi.edgewall.org/wiki/License. 8 # are also available at http://genshi.edgewall.org/wiki/License.
31 def tearDown(self): 31 def tearDown(self):
32 shutil.rmtree(self.dirname) 32 shutil.rmtree(self.dirname)
33 33
34 def test_escaping(self): 34 def test_escaping(self):
35 tmpl = OldTextTemplate('\\#escaped') 35 tmpl = OldTextTemplate('\\#escaped')
36 self.assertEqual('#escaped', str(tmpl.generate())) 36 self.assertEqual('#escaped', tmpl.generate().render(encoding=None))
37 37
38 def test_comment(self): 38 def test_comment(self):
39 tmpl = OldTextTemplate('## a comment') 39 tmpl = OldTextTemplate('## a comment')
40 self.assertEqual('', str(tmpl.generate())) 40 self.assertEqual('', tmpl.generate().render(encoding=None))
41 41
42 def test_comment_escaping(self): 42 def test_comment_escaping(self):
43 tmpl = OldTextTemplate('\\## escaped comment') 43 tmpl = OldTextTemplate('\\## escaped comment')
44 self.assertEqual('## escaped comment', str(tmpl.generate())) 44 self.assertEqual('## escaped comment',
45 tmpl.generate().render(encoding=None))
45 46
46 def test_end_with_args(self): 47 def test_end_with_args(self):
47 tmpl = OldTextTemplate(""" 48 tmpl = OldTextTemplate("""
48 #if foo 49 #if foo
49 bar 50 bar
50 #end 'if foo'""") 51 #end 'if foo'""")
51 self.assertEqual('\n', str(tmpl.generate(foo=False))) 52 self.assertEqual('\n', tmpl.generate(foo=False).render(encoding=None))
52 53
53 def test_latin1_encoded(self): 54 def test_latin1_encoded(self):
54 text = u'$foo\xf6$bar'.encode('iso-8859-1') 55 text = u'$foo\xf6$bar'.encode('iso-8859-1')
55 tmpl = OldTextTemplate(text, encoding='iso-8859-1') 56 tmpl = OldTextTemplate(text, encoding='iso-8859-1')
56 self.assertEqual(u'x\xf6y', unicode(tmpl.generate(foo='x', bar='y'))) 57 self.assertEqual(u'x\xf6y',
58 tmpl.generate(foo='x', bar='y').render(encoding=None))
57 59
58 def test_unicode_input(self): 60 def test_unicode_input(self):
59 text = u'$foo\xf6$bar' 61 text = u'$foo\xf6$bar'
60 tmpl = OldTextTemplate(text) 62 tmpl = OldTextTemplate(text)
61 self.assertEqual(u'x\xf6y', unicode(tmpl.generate(foo='x', bar='y'))) 63 self.assertEqual(u'x\xf6y',
64 tmpl.generate(foo='x', bar='y').render(encoding=None))
62 65
63 def test_empty_lines1(self): 66 def test_empty_lines1(self):
64 tmpl = OldTextTemplate("""Your items: 67 tmpl = OldTextTemplate("""Your items:
65 68
66 #for item in items 69 #for item in items
69 self.assertEqual("""Your items: 72 self.assertEqual("""Your items:
70 73
71 * 0 74 * 0
72 * 1 75 * 1
73 * 2 76 * 2
74 """, tmpl.generate(items=range(3)).render()) 77 """, tmpl.generate(items=range(3)).render(encoding=None))
75 78
76 def test_empty_lines2(self): 79 def test_empty_lines2(self):
77 tmpl = OldTextTemplate("""Your items: 80 tmpl = OldTextTemplate("""Your items:
78 81
79 #for item in items 82 #for item in items
86 89
87 * 1 90 * 1
88 91
89 * 2 92 * 2
90 93
91 """, tmpl.generate(items=range(3)).render()) 94 """, tmpl.generate(items=range(3)).render(encoding=None))
92 95
93 def test_include(self): 96 def test_include(self):
94 file1 = open(os.path.join(self.dirname, 'tmpl1.txt'), 'w') 97 file1 = open(os.path.join(self.dirname, 'tmpl1.txt'), 'w')
95 try: 98 try:
96 file1.write("Included\n") 99 file1.write("Included\n")
108 loader = TemplateLoader([self.dirname]) 111 loader = TemplateLoader([self.dirname])
109 tmpl = loader.load('tmpl2.txt', cls=OldTextTemplate) 112 tmpl = loader.load('tmpl2.txt', cls=OldTextTemplate)
110 self.assertEqual("""----- Included data below this line ----- 113 self.assertEqual("""----- Included data below this line -----
111 Included 114 Included
112 ----- Included data above this line -----""", 115 ----- Included data above this line -----""",
113 tmpl.generate().render()) 116 tmpl.generate().render(encoding=None))
114 117
115 118
116 class NewTextTemplateTestCase(unittest.TestCase): 119 class NewTextTemplateTestCase(unittest.TestCase):
117 """Tests for text template processing.""" 120 """Tests for text template processing."""
118 121
122 def tearDown(self): 125 def tearDown(self):
123 shutil.rmtree(self.dirname) 126 shutil.rmtree(self.dirname)
124 127
125 def test_escaping(self): 128 def test_escaping(self):
126 tmpl = NewTextTemplate('\\{% escaped %}') 129 tmpl = NewTextTemplate('\\{% escaped %}')
127 self.assertEqual('{% escaped %}', str(tmpl.generate())) 130 self.assertEqual('{% escaped %}',
131 tmpl.generate().render(encoding=None))
128 132
129 def test_comment(self): 133 def test_comment(self):
130 tmpl = NewTextTemplate('{# a comment #}') 134 tmpl = NewTextTemplate('{# a comment #}')
131 self.assertEqual('', str(tmpl.generate())) 135 self.assertEqual('', tmpl.generate().render(encoding=None))
132 136
133 def test_comment_escaping(self): 137 def test_comment_escaping(self):
134 tmpl = NewTextTemplate('\\{# escaped comment #}') 138 tmpl = NewTextTemplate('\\{# escaped comment #}')
135 self.assertEqual('{# escaped comment #}', str(tmpl.generate())) 139 self.assertEqual('{# escaped comment #}',
140 tmpl.generate().render(encoding=None))
136 141
137 def test_end_with_args(self): 142 def test_end_with_args(self):
138 tmpl = NewTextTemplate(""" 143 tmpl = NewTextTemplate("""
139 {% if foo %} 144 {% if foo %}
140 bar 145 bar
141 {% end 'if foo' %}""") 146 {% end 'if foo' %}""")
142 self.assertEqual('\n', str(tmpl.generate(foo=False))) 147 self.assertEqual('\n', tmpl.generate(foo=False).render(encoding=None))
143 148
144 def test_latin1_encoded(self): 149 def test_latin1_encoded(self):
145 text = u'$foo\xf6$bar'.encode('iso-8859-1') 150 text = u'$foo\xf6$bar'.encode('iso-8859-1')
146 tmpl = NewTextTemplate(text, encoding='iso-8859-1') 151 tmpl = NewTextTemplate(text, encoding='iso-8859-1')
147 self.assertEqual(u'x\xf6y', unicode(tmpl.generate(foo='x', bar='y'))) 152 self.assertEqual(u'x\xf6y',
153 tmpl.generate(foo='x', bar='y').render(encoding=None))
148 154
149 def test_unicode_input(self): 155 def test_unicode_input(self):
150 text = u'$foo\xf6$bar' 156 text = u'$foo\xf6$bar'
151 tmpl = NewTextTemplate(text) 157 tmpl = NewTextTemplate(text)
152 self.assertEqual(u'x\xf6y', unicode(tmpl.generate(foo='x', bar='y'))) 158 self.assertEqual(u'x\xf6y',
159 tmpl.generate(foo='x', bar='y').render(encoding=None))
153 160
154 def test_empty_lines1(self): 161 def test_empty_lines1(self):
155 tmpl = NewTextTemplate("""Your items: 162 tmpl = NewTextTemplate("""Your items:
156 163
157 {% for item in items %}\ 164 {% for item in items %}\
160 self.assertEqual("""Your items: 167 self.assertEqual("""Your items:
161 168
162 * 0 169 * 0
163 * 1 170 * 1
164 * 2 171 * 2
165 """, tmpl.generate(items=range(3)).render()) 172 """, tmpl.generate(items=range(3)).render(encoding=None))
166 173
167 def test_empty_lines2(self): 174 def test_empty_lines2(self):
168 tmpl = NewTextTemplate("""Your items: 175 tmpl = NewTextTemplate("""Your items:
169 176
170 {% for item in items %}\ 177 {% for item in items %}\
177 184
178 * 1 185 * 1
179 186
180 * 2 187 * 2
181 188
182 """, tmpl.generate(items=range(3)).render()) 189 """, tmpl.generate(items=range(3)).render(encoding=None))
183 190
184 def test_exec_with_trailing_space(self): 191 def test_exec_with_trailing_space(self):
185 """ 192 """
186 Verify that a code block with trailing space does not cause a syntax 193 Verify that a code block with trailing space does not cause a syntax
187 error (see ticket #127). 194 error (see ticket #127).
188 """ 195 """
189 NewTextTemplate(u""" 196 NewTextTemplate("""
190 {% python 197 {% python
191 bar = 42 198 bar = 42
192 $} 199 $}
193 """) 200 """)
194 201
195 def test_exec_import(self): 202 def test_exec_import(self):
196 tmpl = NewTextTemplate(u"""{% python from datetime import timedelta %} 203 tmpl = NewTextTemplate("""{% python from datetime import timedelta %}
197 ${timedelta(days=2)} 204 ${timedelta(days=2)}
198 """) 205 """)
199 self.assertEqual(""" 206 self.assertEqual("""
200 2 days, 0:00:00 207 2 days, 0:00:00
201 """, str(tmpl.generate())) 208 """, tmpl.generate().render(encoding=None))
202 209
203 def test_exec_def(self): 210 def test_exec_def(self):
204 tmpl = NewTextTemplate(u"""{% python 211 tmpl = NewTextTemplate("""{% python
205 def foo(): 212 def foo():
206 return 42 213 return 42
207 %} 214 %}
208 ${foo()} 215 ${foo()}
209 """) 216 """)
210 self.assertEqual(u""" 217 self.assertEqual("""
211 42 218 42
212 """, str(tmpl.generate())) 219 """, tmpl.generate().render(encoding=None))
213 220
214 def test_include(self): 221 def test_include(self):
215 file1 = open(os.path.join(self.dirname, 'tmpl1.txt'), 'w') 222 file1 = open(os.path.join(self.dirname, 'tmpl1.txt'), 'w')
216 try: 223 try:
217 file1.write("Included") 224 file1.write("Included")
228 235
229 loader = TemplateLoader([self.dirname]) 236 loader = TemplateLoader([self.dirname])
230 tmpl = loader.load('tmpl2.txt', cls=NewTextTemplate) 237 tmpl = loader.load('tmpl2.txt', cls=NewTextTemplate)
231 self.assertEqual("""----- Included data below this line ----- 238 self.assertEqual("""----- Included data below this line -----
232 Included 239 Included
233 ----- Included data above this line -----""", tmpl.generate().render()) 240 ----- Included data above this line -----""",
241 tmpl.generate().render(encoding=None))
234 242
235 def test_include_expr(self): 243 def test_include_expr(self):
236 file1 = open(os.path.join(self.dirname, 'tmpl1.txt'), 'w') 244 file1 = open(os.path.join(self.dirname, 'tmpl1.txt'), 'w')
237 try: 245 try:
238 file1.write("Included") 246 file1.write("Included")
249 257
250 loader = TemplateLoader([self.dirname]) 258 loader = TemplateLoader([self.dirname])
251 tmpl = loader.load('tmpl2.txt', cls=NewTextTemplate) 259 tmpl = loader.load('tmpl2.txt', cls=NewTextTemplate)
252 self.assertEqual("""----- Included data below this line ----- 260 self.assertEqual("""----- Included data below this line -----
253 Included 261 Included
254 ----- Included data above this line -----""", tmpl.generate().render()) 262 ----- Included data above this line -----""",
263 tmpl.generate().render(encoding=None))
255 264
256 265
257 def suite(): 266 def suite():
258 suite = unittest.TestSuite() 267 suite = unittest.TestSuite()
259 suite.addTest(doctest.DocTestSuite(NewTextTemplate.__module__)) 268 suite.addTest(doctest.DocTestSuite(NewTextTemplate.__module__))
Copyright (C) 2012-2017 Edgewall Software