Mercurial > genshi > genshi-test
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__)) |