annotate genshi/template/tests/markup.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 de82830f8816
children
rev   line source
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
1 # -*- coding: utf-8 -*-
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
2 #
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
3 # Copyright (C) 2006-2009 Edgewall Software
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
4 # All rights reserved.
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
5 #
5f2c7782cd8a 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
5f2c7782cd8a 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
5f2c7782cd8a 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.
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
9 #
5f2c7782cd8a 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
5f2c7782cd8a 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
5f2c7782cd8a 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/.
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
13
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
14 import doctest
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
15 import os
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
16 import pickle
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
17 import shutil
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
18 from StringIO import StringIO
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
19 import sys
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
20 import tempfile
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
21 import unittest
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
22
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
23 from genshi.core import Markup
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
24 from genshi.input import XML
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
25 from genshi.template.base import BadDirectiveError, TemplateSyntaxError
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
26 from genshi.template.loader import TemplateLoader, TemplateNotFound
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
27 from genshi.template.markup import MarkupTemplate
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
28
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
29
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
30 class MarkupTemplateTestCase(unittest.TestCase):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
31 """Tests for markup template processing."""
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
32
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
33 def test_parse_fileobj(self):
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
34 fileobj = StringIO('<root> ${var} $var</root>')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
35 tmpl = MarkupTemplate(fileobj)
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
36 self.assertEqual('<root> 42 42</root>', str(tmpl.generate(var=42)))
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
37
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
38 def test_parse_stream(self):
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
39 stream = XML('<root> ${var} $var</root>')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
40 tmpl = MarkupTemplate(stream)
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
41 self.assertEqual('<root> 42 42</root>', str(tmpl.generate(var=42)))
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
42
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
43 def test_pickle(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
44 stream = XML('<root>$var</root>')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
45 tmpl = MarkupTemplate(stream)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
46 buf = StringIO()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
47 pickle.dump(tmpl, buf, 2)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
48 buf.seek(0)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
49 unpickled = pickle.load(buf)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
50 self.assertEqual('<root>42</root>', str(unpickled.generate(var=42)))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
51
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
52 def test_interpolate_mixed3(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
53 tmpl = MarkupTemplate('<root> ${var} $var</root>')
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
54 self.assertEqual('<root> 42 42</root>', str(tmpl.generate(var=42)))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
55
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
56 def test_interpolate_leading_trailing_space(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
57 tmpl = MarkupTemplate('<root>${ foo }</root>')
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
58 self.assertEqual('<root>bar</root>', str(tmpl.generate(foo='bar')))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
59
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
60 def test_interpolate_multiline(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
61 tmpl = MarkupTemplate("""<root>${dict(
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
62 bar = 'baz'
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
63 )[foo]}</root>""")
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
64 self.assertEqual('<root>baz</root>', str(tmpl.generate(foo='bar')))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
65
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
66 def test_interpolate_non_string_attrs(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
67 tmpl = MarkupTemplate('<root attr="${1}"/>')
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
68 self.assertEqual('<root attr="1"/>', str(tmpl.generate()))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
69
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
70 def test_interpolate_list_result(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
71 tmpl = MarkupTemplate('<root>$foo</root>')
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
72 self.assertEqual('<root>buzz</root>', str(tmpl.generate(foo=('buzz',))))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
73
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
74 def test_empty_attr(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
75 tmpl = MarkupTemplate('<root attr=""/>')
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
76 self.assertEqual('<root attr=""/>', str(tmpl.generate()))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
77
830
de82830f8816 inline branch: synced with trunk@1038.
cmlenz
parents: 820
diff changeset
78 def test_empty_attr_interpolated(self):
de82830f8816 inline branch: synced with trunk@1038.
cmlenz
parents: 820
diff changeset
79 tmpl = MarkupTemplate('<root attr="$attr"/>')
de82830f8816 inline branch: synced with trunk@1038.
cmlenz
parents: 820
diff changeset
80 self.assertEqual('<root attr=""/>', str(tmpl.generate(attr='')))
de82830f8816 inline branch: synced with trunk@1038.
cmlenz
parents: 820
diff changeset
81
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
82 def test_bad_directive_error(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
83 xml = '<p xmlns:py="http://genshi.edgewall.org/" py:do="nothing" />'
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
84 try:
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
85 tmpl = MarkupTemplate(xml, filename='test.html')
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
86 except BadDirectiveError, e:
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
87 self.assertEqual('test.html', e.filename)
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
88 self.assertEqual(1, e.lineno)
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
89
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
90 def test_directive_value_syntax_error(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
91 xml = """<p xmlns:py="http://genshi.edgewall.org/" py:if="bar'" />"""
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
92 try:
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
93 tmpl = MarkupTemplate(xml, filename='test.html').generate()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
94 self.fail('Expected TemplateSyntaxError')
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
95 except TemplateSyntaxError, e:
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
96 self.assertEqual('test.html', e.filename)
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
97 self.assertEqual(1, e.lineno)
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
98
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
99 def test_expression_syntax_error(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
100 xml = """<p>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
101 Foo <em>${bar"}</em>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
102 </p>"""
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
103 try:
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
104 tmpl = MarkupTemplate(xml, filename='test.html')
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
105 self.fail('Expected TemplateSyntaxError')
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
106 except TemplateSyntaxError, e:
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
107 self.assertEqual('test.html', e.filename)
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
108 self.assertEqual(2, e.lineno)
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
109
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
110 def test_expression_syntax_error_multi_line(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
111 xml = """<p><em></em>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
112
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
113 ${bar"}
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
114
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
115 </p>"""
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
116 try:
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
117 tmpl = MarkupTemplate(xml, filename='test.html')
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
118 self.fail('Expected TemplateSyntaxError')
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
119 except TemplateSyntaxError, e:
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
120 self.assertEqual('test.html', e.filename)
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
121 self.assertEqual(3, e.lineno)
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
122
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
123 def test_markup_noescape(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
124 """
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
125 Verify that outputting context data that is a `Markup` instance is not
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
126 escaped.
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
127 """
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
128 tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
129 $myvar
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
130 </div>""")
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
131 self.assertEqual("""<div>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
132 <b>foo</b>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
133 </div>""", str(tmpl.generate(myvar=Markup('<b>foo</b>'))))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
134
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
135 def test_text_noescape_quotes(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
136 """
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
137 Verify that outputting context data in text nodes doesn't escape
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
138 quotes.
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
139 """
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
140 tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
141 $myvar
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
142 </div>""")
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
143 self.assertEqual("""<div>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
144 "foo"
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
145 </div>""", str(tmpl.generate(myvar='"foo"')))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
146
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
147 def test_attr_escape_quotes(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
148 """
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
149 Verify that outputting context data in attribtes escapes quotes.
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
150 """
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
151 tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
152 <elem class="$myvar"/>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
153 </div>""")
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
154 self.assertEqual("""<div>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
155 <elem class="&#34;foo&#34;"/>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
156 </div>""", str(tmpl.generate(myvar='"foo"')))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
157
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
158 def test_directive_element(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
159 tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
160 <py:if test="myvar">bar</py:if>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
161 </div>""")
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
162 self.assertEqual("""<div>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
163 bar
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
164 </div>""", str(tmpl.generate(myvar='"foo"')))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
165
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
166 def test_normal_comment(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
167 tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
168 <!-- foo bar -->
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
169 </div>""")
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
170 self.assertEqual("""<div>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
171 <!-- foo bar -->
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
172 </div>""", str(tmpl.generate()))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
173
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
174 def test_template_comment(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
175 tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
176 <!-- !foo -->
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
177 <!--!bar-->
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
178 </div>""")
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
179 self.assertEqual("""<div>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
180 </div>""", str(tmpl.generate()))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
181
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
182 def test_parse_with_same_namespace_nested(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
183 tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
184 <span xmlns:py="http://genshi.edgewall.org/">
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
185 </span>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
186 </div>""")
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
187 self.assertEqual("""<div>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
188 <span>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
189 </span>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
190 </div>""", str(tmpl.generate()))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
191
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
192 def test_latin1_encoded_with_xmldecl(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
193 tmpl = MarkupTemplate(u"""<?xml version="1.0" encoding="iso-8859-1" ?>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
194 <div xmlns:py="http://genshi.edgewall.org/">
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
195 \xf6
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
196 </div>""".encode('iso-8859-1'), encoding='iso-8859-1')
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
197 self.assertEqual(u"""<?xml version="1.0" encoding="iso-8859-1"?>\n<div>
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
198 \xf6
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
199 </div>""", unicode(tmpl.generate()))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
200
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
201 def test_latin1_encoded_explicit_encoding(self):
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
202 tmpl = MarkupTemplate(u"""<div xmlns:py="http://genshi.edgewall.org/">
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
203 \xf6
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
204 </div>""".encode('iso-8859-1'), encoding='iso-8859-1')
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
205 self.assertEqual(u"""<div>
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
206 \xf6
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
207 </div>""", unicode(tmpl.generate()))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
208
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
209 def test_exec_with_trailing_space(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
210 """
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
211 Verify that a code block processing instruction with trailing space
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
212 does not cause a syntax error (see ticket #127).
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
213 """
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
214 MarkupTemplate("""<foo>
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
215 <?python
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
216 bar = 42
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
217 ?>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
218 </foo>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
219
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
220 def test_exec_import(self):
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
221 tmpl = MarkupTemplate("""<?python from datetime import timedelta ?>
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
222 <div xmlns:py="http://genshi.edgewall.org/">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
223 ${timedelta(days=2)}
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
224 </div>""")
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
225 self.assertEqual("""<div>
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
226 2 days, 0:00:00
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
227 </div>""", str(tmpl.generate()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
228
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
229 def test_exec_def(self):
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
230 tmpl = MarkupTemplate("""
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
231 <?python
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
232 def foo():
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
233 return 42
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
234 ?>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
235 <div xmlns:py="http://genshi.edgewall.org/">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
236 ${foo()}
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
237 </div>""")
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
238 self.assertEqual("""<div>
500
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
239 42
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
240 </div>""", str(tmpl.generate()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
241
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
242 def test_namespace_on_removed_elem(self):
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
243 """
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
244 Verify that a namespace declaration on an element that is removed from
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
245 the generated stream does not get pushed up to the next non-stripped
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
246 element (see ticket #107).
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
247 """
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
248 tmpl = MarkupTemplate("""<?xml version="1.0"?>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
249 <Test xmlns:py="http://genshi.edgewall.org/">
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
250 <Size py:if="0" xmlns:t="test">Size</Size>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
251 <Item/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
252 </Test>""")
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
253 self.assertEqual("""<?xml version="1.0"?>\n<Test>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
254
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
255 <Item/>
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
256 </Test>""", str(tmpl.generate()))
0742f421caba Merged revisions 487-603 via svnmerge from
cmlenz
parents: 395
diff changeset
257
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
258 def test_include_in_loop(self):
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
259 dirname = tempfile.mkdtemp(suffix='genshi_test')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
260 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
261 file1 = open(os.path.join(dirname, 'tmpl1.html'), 'w')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
262 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
263 file1.write("""<div>Included $idx</div>""")
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
264 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
265 file1.close()
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
266
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
267 file2 = open(os.path.join(dirname, 'tmpl2.html'), 'w')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
268 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
269 file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude"
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
270 xmlns:py="http://genshi.edgewall.org/">
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
271 <xi:include href="${name}.html" py:for="idx in range(3)" />
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
272 </html>""")
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
273 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
274 file2.close()
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
275
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
276 loader = TemplateLoader([dirname])
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
277 tmpl = loader.load('tmpl2.html')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
278 self.assertEqual("""<html>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
279 <div>Included 0</div><div>Included 1</div><div>Included 2</div>
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
280 </html>""", tmpl.generate(name='tmpl1').render(encoding=None))
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
281 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
282 shutil.rmtree(dirname)
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
283
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
284 def test_dynamic_include_href(self):
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
285 dirname = tempfile.mkdtemp(suffix='genshi_test')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
286 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
287 file1 = open(os.path.join(dirname, 'tmpl1.html'), 'w')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
288 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
289 file1.write("""<div>Included</div>""")
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
290 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
291 file1.close()
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
292
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
293 file2 = open(os.path.join(dirname, 'tmpl2.html'), 'w')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
294 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
295 file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude"
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
296 xmlns:py="http://genshi.edgewall.org/">
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
297 <xi:include href="${name}.html" />
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
298 </html>""")
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
299 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
300 file2.close()
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
301
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
302 loader = TemplateLoader([dirname])
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
303 tmpl = loader.load('tmpl2.html')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
304 self.assertEqual("""<html>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
305 <div>Included</div>
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
306 </html>""", tmpl.generate(name='tmpl1').render(encoding=None))
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
307 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
308 shutil.rmtree(dirname)
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
309
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
310 def test_select_included_elements(self):
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
311 dirname = tempfile.mkdtemp(suffix='genshi_test')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
312 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
313 file1 = open(os.path.join(dirname, 'tmpl1.html'), 'w')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
314 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
315 file1.write("""<li>$item</li>""")
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
316 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
317 file1.close()
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
318
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
319 file2 = open(os.path.join(dirname, 'tmpl2.html'), 'w')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
320 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
321 file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude"
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
322 xmlns:py="http://genshi.edgewall.org/">
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
323 <ul py:match="ul">${select('li')}</ul>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
324 <ul py:with="items=(1, 2, 3)">
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
325 <xi:include href="tmpl1.html" py:for="item in items" />
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
326 </ul>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
327 </html>""")
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
328 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
329 file2.close()
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
330
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
331 loader = TemplateLoader([dirname])
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
332 tmpl = loader.load('tmpl2.html')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
333 self.assertEqual("""<html>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
334 <ul><li>1</li><li>2</li><li>3</li></ul>
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
335 </html>""", tmpl.generate().render(encoding=None))
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
336 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
337 shutil.rmtree(dirname)
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
338
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
339 def test_fallback_when_include_found(self):
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
340 dirname = tempfile.mkdtemp(suffix='genshi_test')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
341 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
342 file1 = open(os.path.join(dirname, 'tmpl1.html'), 'w')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
343 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
344 file1.write("""<div>Included</div>""")
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
345 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
346 file1.close()
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
347
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
348 file2 = open(os.path.join(dirname, 'tmpl2.html'), 'w')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
349 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
350 file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude">
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
351 <xi:include href="tmpl1.html"><xi:fallback>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
352 Missing</xi:fallback></xi:include>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
353 </html>""")
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
354 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
355 file2.close()
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
356
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
357 loader = TemplateLoader([dirname])
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
358 tmpl = loader.load('tmpl2.html')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
359 self.assertEqual("""<html>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
360 <div>Included</div>
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
361 </html>""", tmpl.generate().render(encoding=None))
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
362 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
363 shutil.rmtree(dirname)
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
364
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
365 def test_error_when_include_not_found(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
366 dirname = tempfile.mkdtemp(suffix='genshi_test')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
367 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
368 file2 = open(os.path.join(dirname, 'tmpl2.html'), 'w')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
369 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
370 file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
371 <xi:include href="tmpl1.html"/>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
372 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
373 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
374 file2.close()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
375
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
376 loader = TemplateLoader([dirname], auto_reload=True)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
377 tmpl = loader.load('tmpl2.html')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
378 self.assertRaises(TemplateNotFound, tmpl.generate().render)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
379 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
380 shutil.rmtree(dirname)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
381
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
382 def test_fallback_when_include_not_found(self):
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
383 dirname = tempfile.mkdtemp(suffix='genshi_test')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
384 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
385 file2 = open(os.path.join(dirname, 'tmpl2.html'), 'w')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
386 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
387 file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude">
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
388 <xi:include href="tmpl1.html"><xi:fallback>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
389 Missing</xi:fallback></xi:include>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
390 </html>""")
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
391 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
392 file2.close()
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
393
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
394 loader = TemplateLoader([dirname])
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
395 tmpl = loader.load('tmpl2.html')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
396 self.assertEqual("""<html>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
397 Missing
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
398 </html>""", tmpl.generate().render(encoding=None))
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
399 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
400 shutil.rmtree(dirname)
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
401
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
402 def test_fallback_when_auto_reload_true(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
403 dirname = tempfile.mkdtemp(suffix='genshi_test')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
404 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
405 file2 = open(os.path.join(dirname, 'tmpl2.html'), 'w')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
406 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
407 file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
408 <xi:include href="tmpl1.html"><xi:fallback>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
409 Missing</xi:fallback></xi:include>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
410 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
411 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
412 file2.close()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
413
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
414 loader = TemplateLoader([dirname], auto_reload=True)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
415 tmpl = loader.load('tmpl2.html')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
416 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
417 Missing
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
418 </html>""", tmpl.generate().render(encoding=None))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
419 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
420 shutil.rmtree(dirname)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
421
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
422 def test_include_in_fallback(self):
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
423 dirname = tempfile.mkdtemp(suffix='genshi_test')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
424 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
425 file1 = open(os.path.join(dirname, 'tmpl1.html'), 'w')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
426 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
427 file1.write("""<div>Included</div>""")
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
428 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
429 file1.close()
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
430
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
431 file2 = open(os.path.join(dirname, 'tmpl3.html'), 'w')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
432 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
433 file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude">
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
434 <xi:include href="tmpl2.html">
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
435 <xi:fallback>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
436 <xi:include href="tmpl1.html">
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
437 <xi:fallback>Missing</xi:fallback>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
438 </xi:include>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
439 </xi:fallback>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
440 </xi:include>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
441 </html>""")
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
442 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
443 file2.close()
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
444
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
445 loader = TemplateLoader([dirname])
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
446 tmpl = loader.load('tmpl3.html')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
447 self.assertEqual("""<html>
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
448 <div>Included</div>
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
449 </html>""", tmpl.generate().render(encoding=None))
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
450 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
451 shutil.rmtree(dirname)
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
452
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
453 def test_nested_include_fallback(self):
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
454 dirname = tempfile.mkdtemp(suffix='genshi_test')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
455 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
456 file2 = open(os.path.join(dirname, 'tmpl3.html'), 'w')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
457 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
458 file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude">
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
459 <xi:include href="tmpl2.html">
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
460 <xi:fallback>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
461 <xi:include href="tmpl1.html">
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
462 <xi:fallback>Missing</xi:fallback>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
463 </xi:include>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
464 </xi:fallback>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
465 </xi:include>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
466 </html>""")
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
467 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
468 file2.close()
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
469
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
470 loader = TemplateLoader([dirname])
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
471 tmpl = loader.load('tmpl3.html')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
472 self.assertEqual("""<html>
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
473 Missing
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
474 </html>""", tmpl.generate().render(encoding=None))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
475 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
476 shutil.rmtree(dirname)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
477
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
478 def test_nested_include_in_fallback(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
479 dirname = tempfile.mkdtemp(suffix='genshi_test')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
480 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
481 file1 = open(os.path.join(dirname, 'tmpl2.html'), 'w')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
482 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
483 file1.write("""<div>Included</div>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
484 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
485 file1.close()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
486
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
487 file2 = open(os.path.join(dirname, 'tmpl3.html'), 'w')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
488 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
489 file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
490 <xi:include href="tmpl2.html">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
491 <xi:fallback>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
492 <xi:include href="tmpl1.html" />
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
493 </xi:fallback>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
494 </xi:include>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
495 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
496 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
497 file2.close()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
498
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
499 loader = TemplateLoader([dirname])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
500 tmpl = loader.load('tmpl3.html')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
501 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
502 <div>Included</div>
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
503 </html>""", tmpl.generate().render(encoding=None))
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
504 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
505 shutil.rmtree(dirname)
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
506
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
507 def test_include_fallback_with_directive(self):
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
508 dirname = tempfile.mkdtemp(suffix='genshi_test')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
509 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
510 file2 = open(os.path.join(dirname, 'tmpl2.html'), 'w')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
511 try:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
512 file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude"
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
513 xmlns:py="http://genshi.edgewall.org/">
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
514 <xi:include href="tmpl1.html"><xi:fallback>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
515 <py:if test="True">tmpl1.html not found</py:if>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
516 </xi:fallback></xi:include>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
517 </html>""")
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
518 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
519 file2.close()
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
520
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
521 loader = TemplateLoader([dirname])
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
522 tmpl = loader.load('tmpl2.html')
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
523 self.assertEqual("""<html>
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
524 tmpl1.html not found
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
525 </html>""", tmpl.generate(debug=True).render(encoding=None))
395
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
526 finally:
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
527 shutil.rmtree(dirname)
55cf81951686 inline branch: Merged [439:479/trunk].
cmlenz
parents: 336
diff changeset
528
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
529 def test_include_inlined(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
530 dirname = tempfile.mkdtemp(suffix='genshi_test')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
531 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
532 file1 = open(os.path.join(dirname, 'tmpl1.html'), 'w')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
533 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
534 file1.write("""<div>Included</div>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
535 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
536 file1.close()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
537
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
538 file2 = open(os.path.join(dirname, 'tmpl2.html'), 'w')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
539 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
540 file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
541 xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
542 <xi:include href="tmpl1.html" />
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
543 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
544 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
545 file2.close()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
546
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
547 loader = TemplateLoader([dirname], auto_reload=False)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
548 tmpl = loader.load('tmpl2.html')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
549 # if not inlined the following would be 5
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
550 self.assertEqual(7, len(tmpl.stream))
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
551 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
552 <div>Included</div>
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
553 </html>""", tmpl.generate().render(encoding=None))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
554 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
555 shutil.rmtree(dirname)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
556
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
557 def test_include_inlined_in_loop(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
558 dirname = tempfile.mkdtemp(suffix='genshi_test')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
559 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
560 file1 = open(os.path.join(dirname, 'tmpl1.html'), 'w')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
561 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
562 file1.write("""<div>Included $idx</div>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
563 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
564 file1.close()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
565
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
566 file2 = open(os.path.join(dirname, 'tmpl2.html'), 'w')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
567 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
568 file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
569 xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
570 <xi:include href="tmpl1.html" py:for="idx in range(3)" />
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
571 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
572 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
573 file2.close()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
574
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
575 loader = TemplateLoader([dirname], auto_reload=False)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
576 tmpl = loader.load('tmpl2.html')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
577 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
578 <div>Included 0</div><div>Included 1</div><div>Included 2</div>
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
579 </html>""", tmpl.generate().render(encoding=None))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
580 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
581 shutil.rmtree(dirname)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
582
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
583 def test_allow_exec_false(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
584 xml = ("""<?python
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
585 title = "A Genshi Template"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
586 ?>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
587 <html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
588 <head>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
589 <title py:content="title">This is replaced.</title>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
590 </head>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
591 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
592 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
593 tmpl = MarkupTemplate(xml, filename='test.html',
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
594 allow_exec=False)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
595 self.fail('Expected SyntaxError')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
596 except TemplateSyntaxError, e:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
597 pass
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
598
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
599 def test_allow_exec_true(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
600 xml = ("""<?python
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
601 title = "A Genshi Template"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
602 ?>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
603 <html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
604 <head>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
605 <title py:content="title">This is replaced.</title>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
606 </head>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
607 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
608 tmpl = MarkupTemplate(xml, filename='test.html', allow_exec=True)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
609
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
610 def test_exec_in_match(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
611 xml = ("""<html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
612 <py:match path="body/p">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
613 <?python title="wakka wakka wakka" ?>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
614 ${title}
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
615 </py:match>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
616 <body><p>moot text</p></body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
617 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
618 tmpl = MarkupTemplate(xml, filename='test.html', allow_exec=True)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
619 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
620 <body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
621 wakka wakka wakka
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
622 </body>
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
623 </html>""", tmpl.generate().render(encoding=None))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
624
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
625 def test_with_in_match(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
626 xml = ("""<html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
627 <py:match path="body/p">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
628 <h1>${select('text()')}</h1>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
629 ${select('.')}
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
630 </py:match>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
631 <body><p py:with="foo='bar'">${foo}</p></body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
632 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
633 tmpl = MarkupTemplate(xml, filename='test.html')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
634 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
635 <body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
636 <h1>bar</h1>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
637 <p>bar</p>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
638 </body>
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
639 </html>""", tmpl.generate().render(encoding=None))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
640
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
641 def test_nested_include_matches(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
642 # See ticket #157
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
643 dirname = tempfile.mkdtemp(suffix='genshi_test')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
644 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
645 file1 = open(os.path.join(dirname, 'tmpl1.html'), 'w')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
646 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
647 file1.write("""<html xmlns:py="http://genshi.edgewall.org/" py:strip="">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
648 <div class="target">Some content.</div>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
649 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
650 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
651 file1.close()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
652
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
653 file2 = open(os.path.join(dirname, 'tmpl2.html'), 'w')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
654 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
655 file2.write("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
656 xmlns:xi="http://www.w3.org/2001/XInclude">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
657 <body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
658 <h1>Some full html document that includes file1.html</h1>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
659 <xi:include href="tmpl1.html" />
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
660 </body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
661 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
662 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
663 file2.close()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
664
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
665 file3 = open(os.path.join(dirname, 'tmpl3.html'), 'w')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
666 try:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
667 file3.write("""<html xmlns:py="http://genshi.edgewall.org/"
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
668 xmlns:xi="http://www.w3.org/2001/XInclude" py:strip="">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
669 <div py:match="div[@class='target']" py:attrs="select('@*')">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
670 Some added stuff.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
671 ${select('*|text()')}
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
672 </div>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
673 <xi:include href="tmpl2.html" />
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
674 </html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
675 """)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
676 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
677 file3.close()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
678
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
679 loader = TemplateLoader([dirname])
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
680 tmpl = loader.load('tmpl3.html')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
681 self.assertEqual("""
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
682 <html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
683 <body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
684 <h1>Some full html document that includes file1.html</h1>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
685 <div class="target">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
686 Some added stuff.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
687 Some content.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
688 </div>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
689 </body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
690 </html>
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
691 """, tmpl.generate().render(encoding=None))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
692 finally:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
693 shutil.rmtree(dirname)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
694
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
695 def test_nested_matches_without_buffering(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
696 xml = ("""<html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
697 <py:match path="body" once="true" buffer="false">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
698 <body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
699 ${select('*|text')}
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
700 And some other stuff...
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
701 </body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
702 </py:match>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
703 <body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
704 <span py:match="span">Foo</span>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
705 <span>Bar</span>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
706 </body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
707 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
708 tmpl = MarkupTemplate(xml, filename='test.html')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
709 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
710 <body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
711 <span>Foo</span>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
712 And some other stuff...
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
713 </body>
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
714 </html>""", tmpl.generate().render(encoding=None))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
715
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
716 def test_match_without_select(self):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
717 # See <http://genshi.edgewall.org/ticket/243>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
718 xml = ("""<html xmlns:py="http://genshi.edgewall.org/">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
719 <py:match path="body" buffer="false">
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
720 <body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
721 This replaces the other text.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
722 </body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
723 </py:match>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
724 <body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
725 This gets replaced.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
726 </body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
727 </html>""")
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
728 tmpl = MarkupTemplate(xml, filename='test.html')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
729 self.assertEqual("""<html>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
730 <body>
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
731 This replaces the other text.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
732 </body>
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 830
diff changeset
733 </html>""", tmpl.generate().render(encoding=None))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents: 500
diff changeset
734
336
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
735
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
736 def suite():
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
737 suite = unittest.TestSuite()
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
738 suite.addTest(doctest.DocTestSuite(MarkupTemplate.__module__))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
739 suite.addTest(unittest.makeSuite(MarkupTemplateTestCase, 'test'))
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
740 return suite
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
741
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
742 if __name__ == '__main__':
5f2c7782cd8a Refactoring: `genshi.template` is now a package, it was getting way to crowded in that file.
cmlenz
parents:
diff changeset
743 unittest.main(defaultTest='suite')
Copyright (C) 2012-2017 Edgewall Software