Mercurial > genshi > mirror
annotate genshi/template/tests/text.py @ 418:c478a6fa9e77 trunk
Make expression error handling more strict. Closes #88.
author | cmlenz |
---|---|
date | Fri, 16 Mar 2007 08:58:54 +0000 |
parents | 4f431931d64e |
children | b373f80f7763 e57be40ff6c3 |
rev | line source |
---|---|
336
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
1 # -*- coding: utf-8 -*- |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
2 # |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
3 # Copyright (C) 2006 Edgewall Software |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
4 # All rights reserved. |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
5 # |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
6 # This software is licensed as described in the file COPYING, which |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
7 # you should have received as part of this distribution. The terms |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
8 # are also available at http://genshi.edgewall.org/wiki/License. |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
9 # |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
10 # This software consists of voluntary contributions made by many |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
11 # individuals. For the exact contribution history, see the revision |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
12 # history and logs, available at http://genshi.edgewall.org/log/. |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
13 |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
14 import doctest |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
15 import unittest |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
16 |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
17 from genshi.template.text import TextTemplate |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
18 |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
19 |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
20 class TextTemplateTestCase(unittest.TestCase): |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
21 """Tests for text template processing.""" |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
22 |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
23 def test_escaping(self): |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
24 tmpl = TextTemplate('\\#escaped') |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
25 self.assertEqual('#escaped', str(tmpl.generate())) |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
26 |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
27 def test_comment(self): |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
28 tmpl = TextTemplate('## a comment') |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
29 self.assertEqual('', str(tmpl.generate())) |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
30 |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
31 def test_comment_escaping(self): |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
32 tmpl = TextTemplate('\\## escaped comment') |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
33 self.assertEqual('## escaped comment', str(tmpl.generate())) |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
34 |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
35 def test_end_with_args(self): |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
36 tmpl = TextTemplate(""" |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
37 #if foo |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
38 bar |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
39 #end 'if foo'""") |
418
c478a6fa9e77
Make expression error handling more strict. Closes #88.
cmlenz
parents:
365
diff
changeset
|
40 self.assertEqual('\n', str(tmpl.generate(foo=False))) |
336
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
41 |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
42 def test_latin1_encoded(self): |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
43 text = u'$foo\xf6$bar'.encode('iso-8859-1') |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
44 tmpl = TextTemplate(text, encoding='iso-8859-1') |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
45 self.assertEqual(u'x\xf6y', unicode(tmpl.generate(foo='x', bar='y'))) |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
46 |
365
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
47 def test_empty_lines1(self): |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
48 tmpl = TextTemplate("""Your items: |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
49 |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
50 #for item in items |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
51 * ${item} |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
52 #end""") |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
53 self.assertEqual("""Your items: |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
54 |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
55 * 0 |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
56 * 1 |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
57 * 2 |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
58 """, tmpl.generate(items=range(3)).render('text')) |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
59 |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
60 def test_empty_lines2(self): |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
61 tmpl = TextTemplate("""Your items: |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
62 |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
63 #for item in items |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
64 * ${item} |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
65 |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
66 #end""") |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
67 self.assertEqual("""Your items: |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
68 |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
69 * 0 |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
70 |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
71 * 1 |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
72 |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
73 * 2 |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
74 |
4f431931d64e
Fix for #62: preserve whitespace in front of directives.
cmlenz
parents:
336
diff
changeset
|
75 """, tmpl.generate(items=range(3)).render('text')) |
336
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
76 |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
77 |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
78 def suite(): |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
79 suite = unittest.TestSuite() |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
80 suite.addTest(doctest.DocTestSuite(TextTemplate.__module__)) |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
81 suite.addTest(unittest.makeSuite(TextTemplateTestCase, 'test')) |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
82 return suite |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
83 |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
84 if __name__ == '__main__': |
7763f7aec949
Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff
changeset
|
85 unittest.main(defaultTest='suite') |