changeset 865:6638c9db9e8c

Also skip the encoding step in the template tests.
author cmlenz
date Thu, 12 Nov 2009 21:25:37 +0000
parents 266aa2e347f5
children 6148ec774d7a
files genshi/template/tests/directives.py genshi/template/tests/loader.py genshi/template/tests/markup.py genshi/template/tests/text.py genshi/template/text.py
diffstat 5 files changed, 130 insertions(+), 121 deletions(-) [+]
line wrap: on
line diff
--- a/genshi/template/tests/directives.py
+++ b/genshi/template/tests/directives.py
@@ -32,7 +32,7 @@
         items = [{'id': 1, 'class': 'foo'}, {'id': 2, 'class': 'bar'}]
         self.assertEqual("""<doc>
           <elem id="1" class="foo"/><elem id="2" class="bar"/>
-        </doc>""", str(tmpl.generate(items=items)))
+        </doc>""", tmpl.generate(items=items).render(encoding=None))
 
     def test_update_existing_attr(self):
         """
@@ -44,7 +44,7 @@
         </doc>""")
         self.assertEqual("""<doc>
           <elem class="bar"/>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_remove_existing_attr(self):
         """
@@ -56,7 +56,7 @@
         </doc>""")
         self.assertEqual("""<doc>
           <elem/>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
 
 class ChooseDirectiveTestCase(unittest.TestCase):
@@ -75,7 +75,7 @@
         </div>""")
         self.assertEqual("""<div>
           <span>1</span>
-        </div>""", str(tmpl.generate()))
+        </div>""", tmpl.generate().render(encoding=None))
 
     def test_otherwise(self):
         tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/" py:choose="">
@@ -84,7 +84,7 @@
         </div>""")
         self.assertEqual("""<div>
           <span>hello</span>
-        </div>""", str(tmpl.generate()))
+        </div>""", tmpl.generate().render(encoding=None))
 
     def test_nesting(self):
         """
@@ -104,7 +104,7 @@
               <span>3</span>
             </div>
           </div>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_complex_nesting(self):
         """
@@ -124,7 +124,7 @@
               <span>OK</span>
             </div>
           </div>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_complex_nesting_otherwise(self):
         """
@@ -144,7 +144,7 @@
               <span>OK</span>
             </div>
           </div>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_when_with_strip(self):
         """
@@ -158,7 +158,7 @@
         </doc>""")
         self.assertEqual("""<doc>
             <span>foo</span>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_when_outside_choose(self):
         """
@@ -205,7 +205,7 @@
         </doc>""")
         self.assertEqual("""<doc>
             foo
-        </doc>""", str(tmpl.generate(foo='Yeah')))
+        </doc>""", tmpl.generate(foo='Yeah').render(encoding=None))
 
     def test_otherwise_without_test(self):
         """
@@ -219,7 +219,7 @@
         </doc>""")
         self.assertEqual("""<doc>
             foo
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_as_element(self):
         """
@@ -234,7 +234,7 @@
         </doc>""")
         self.assertEqual("""<doc>
             1
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_in_text_template(self):
         """
@@ -251,7 +251,8 @@
             3
           #end
         #end""")
-        self.assertEqual("""            1\n""", str(tmpl.generate()))
+        self.assertEqual("""            1\n""",
+                         tmpl.generate().render(encoding=None))
 
 
 class DefDirectiveTestCase(unittest.TestCase):
@@ -270,7 +271,7 @@
         </doc>""")
         self.assertEqual("""<doc>
             <b>foo</b>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_exec_in_replace(self):
         tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
@@ -283,7 +284,7 @@
           <p class="message">
             hello, world!
           </p>
-        </div>""", str(tmpl.generate()))
+        </div>""", tmpl.generate().render(encoding=None))
 
     def test_as_element(self):
         """
@@ -297,7 +298,7 @@
         </doc>""")
         self.assertEqual("""<doc>
             <b>foo</b>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_nested_defs(self):
         """
@@ -315,7 +316,7 @@
         </doc>""")
         self.assertEqual("""<doc>
           <strong>foo</strong>
-        </doc>""", str(tmpl.generate(semantic=True)))
+        </doc>""", tmpl.generate(semantic=True).render(encoding=None))
 
     def test_function_with_default_arg(self):
         """
@@ -327,7 +328,7 @@
         </doc>""")
         self.assertEqual("""<doc>
           foo
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_invocation_in_attribute(self):
         tmpl = MarkupTemplate("""<doc xmlns:py="http://genshi.edgewall.org/">
@@ -336,7 +337,7 @@
         </doc>""")
         self.assertEqual("""<doc>
           <p class="foo">bar</p>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_invocation_in_attribute_none(self):
         tmpl = MarkupTemplate("""<doc xmlns:py="http://genshi.edgewall.org/">
@@ -345,7 +346,7 @@
         </doc>""")
         self.assertEqual("""<doc>
           <p>bar</p>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_function_raising_typeerror(self):
         def badfunc():
@@ -368,7 +369,7 @@
         </doc>""")
         self.assertEqual("""<doc>
           <head><title>True</title></head>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_in_text_template(self):
         """
@@ -383,7 +384,7 @@
         self.assertEqual("""
                       Hi, you!
 
-        """, str(tmpl.generate()))
+        """, tmpl.generate().render(encoding=None))
 
     def test_function_with_star_args(self):
         """
@@ -402,7 +403,7 @@
             [1, 2]
             {'a': 3, 'b': 4}
           </div>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
 
 class ForDirectiveTestCase(unittest.TestCase):
@@ -424,7 +425,7 @@
             <b>3</b>
             <b>4</b>
             <b>5</b>
-        </doc>""", str(tmpl.generate(items=range(1, 6))))
+        </doc>""", tmpl.generate(items=range(1, 6)).render(encoding=None))
 
     def test_as_element(self):
         """
@@ -441,7 +442,7 @@
             <b>3</b>
             <b>4</b>
             <b>5</b>
-        </doc>""", str(tmpl.generate(items=range(1, 6))))
+        </doc>""", tmpl.generate(items=range(1, 6)).render(encoding=None))
 
     def test_multi_assignment(self):
         """
@@ -455,7 +456,8 @@
         self.assertEqual("""<doc>
             <p>key=a, value=1</p>
             <p>key=b, value=2</p>
-        </doc>""", str(tmpl.generate(items=dict(a=1, b=2).items())))
+        </doc>""", tmpl.generate(items=dict(a=1, b=2).items())
+                       .render(encoding=None))
 
     def test_nested_assignment(self):
         """
@@ -469,7 +471,8 @@
         self.assertEqual("""<doc>
             <p>0: key=a, value=1</p>
             <p>1: key=b, value=2</p>
-        </doc>""", str(tmpl.generate(items=enumerate(dict(a=1, b=2).items()))))
+        </doc>""", tmpl.generate(items=enumerate(dict(a=1, b=2).items()))
+                       .render(encoding=None))
 
     def test_not_iterable(self):
         """
@@ -528,7 +531,7 @@
         </doc>""")
         self.assertEqual("""<doc>
           Hello
-        </doc>""", str(tmpl.generate(foo=True, bar='Hello')))
+        </doc>""", tmpl.generate(foo=True, bar='Hello').render(encoding=None))
 
     def test_as_element(self):
         """
@@ -539,7 +542,7 @@
         </doc>""")
         self.assertEqual("""<doc>
           Hello
-        </doc>""", str(tmpl.generate(foo=True, bar='Hello')))
+        </doc>""", tmpl.generate(foo=True, bar='Hello').render(encoding=None))
 
 
 class MatchDirectiveTestCase(unittest.TestCase):
@@ -558,7 +561,7 @@
         </doc>""")
         self.assertEqual("""<doc>
             <div class="elem">Hey Joe</div>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_without_strip(self):
         """
@@ -575,7 +578,7 @@
           <elem>
             <div class="elem">Hey Joe</div>
           </elem>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_as_element(self):
         """
@@ -589,7 +592,7 @@
         </doc>""")
         self.assertEqual("""<doc>
             <div class="elem">Hey Joe</div>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_recursive_match_1(self):
         """
@@ -619,7 +622,7 @@
             </subelem>
             </div>
           </elem>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_recursive_match_2(self):
         """
@@ -645,7 +648,7 @@
             <div id="header"/><h1>Foo</h1>
             <div id="footer"/>
           </body>
-        </html>""", str(tmpl.generate()))
+        </html>""", tmpl.generate().render(encoding=None))
 
     def test_recursive_match_3(self):
         tmpl = MarkupTemplate("""<test xmlns:py="http://genshi.edgewall.org/">
@@ -671,7 +674,7 @@
             <generic>
             <ul><bullet>1</bullet><bullet>2</bullet></ul>
           </generic>
-        </test>""", str(tmpl.generate()))
+        </test>""", tmpl.generate().render(encoding=None))
 
     def test_not_match_self(self):
         """
@@ -693,7 +696,7 @@
             Hello!
             Goodbye!
           </h1></body>
-        </html>""", str(tmpl.generate()))
+        </html>""", tmpl.generate().render(encoding=None))
 
     def test_select_text_in_element(self):
         """
@@ -719,7 +722,7 @@
             </text>
             Goodbye!
           </h1></body>
-        </html>""", str(tmpl.generate()))
+        </html>""", tmpl.generate().render(encoding=None))
 
     def test_select_all_attrs(self):
         tmpl = MarkupTemplate("""<doc xmlns:py="http://genshi.edgewall.org/">
@@ -732,7 +735,7 @@
           <div id="joe">
             Hey Joe
           </div>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_select_all_attrs_empty(self):
         tmpl = MarkupTemplate("""<doc xmlns:py="http://genshi.edgewall.org/">
@@ -745,7 +748,7 @@
           <div>
             Hey Joe
           </div>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_select_all_attrs_in_body(self):
         tmpl = MarkupTemplate("""<doc xmlns:py="http://genshi.edgewall.org/">
@@ -758,7 +761,7 @@
           <div>
             Hey Joe Cool
           </div>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_def_in_match(self):
         tmpl = MarkupTemplate("""<doc xmlns:py="http://genshi.edgewall.org/">
@@ -768,7 +771,7 @@
         </doc>""")
         self.assertEqual("""<doc>
           <head><title>True</title></head>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     def test_match_with_xpath_variable(self):
         tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
@@ -781,10 +784,10 @@
           <span>
             Hello Dude
           </span>
-        </div>""", str(tmpl.generate(tagname='greeting')))
+        </div>""", tmpl.generate(tagname='greeting').render(encoding=None))
         self.assertEqual("""<div>
           <greeting name="Dude"/>
-        </div>""", str(tmpl.generate(tagname='sayhello')))
+        </div>""", tmpl.generate(tagname='sayhello').render(encoding=None))
 
     def test_content_directive_in_match(self):
         tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
@@ -793,7 +796,7 @@
         </html>""")
         self.assertEqual("""<html>
           <div>I said <q>bar</q>.</div>
-        </html>""", str(tmpl.generate()))
+        </html>""", tmpl.generate().render(encoding=None))
 
     def test_cascaded_matches(self):
         tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
@@ -806,7 +809,7 @@
         self.assertEqual("""<html>
           <head><title>Welcome to Markup</title></head>
           <body><h2>Are you ready to mark up?</h2><hr/></body>
-        </html>""", str(tmpl.generate()))
+        </html>""", tmpl.generate().render(encoding=None))
 
     def test_multiple_matches(self):
         tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
@@ -836,7 +839,8 @@
             <label>Hello_4</label>
             <input value="4" type="text" name="hello_4"/>
           </p></form>
-        </html>""", str(tmpl.generate(fields=fields, values=values)))
+        </html>""", tmpl.generate(fields=fields, values=values)
+                        .render(encoding=None))
 
     def test_namespace_context(self):
         tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/"
@@ -848,7 +852,7 @@
         #        such as the "x" in this example
         self.assertEqual("""<html xmlns:x="http://www.example.org/">
           <div>Foo</div>
-        </html>""", str(tmpl.generate()))
+        </html>""", tmpl.generate().render(encoding=None))
 
     def test_match_with_position_predicate(self):
         tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
@@ -863,7 +867,7 @@
             <p class="first">Foo</p>
             <p>Bar</p>
           </body>
-        </html>""", str(tmpl.generate()))
+        </html>""", tmpl.generate().render(encoding=None))
 
     def test_match_with_closure(self):
         tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
@@ -878,7 +882,7 @@
             <p class="para">Foo</p>
             <div><p class="para">Bar</p></div>
           </body>
-        </html>""", str(tmpl.generate()))
+        </html>""", tmpl.generate().render(encoding=None))
 
     def test_match_without_closure(self):
         tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
@@ -893,7 +897,7 @@
             <p class="para">Foo</p>
             <div><p>Bar</p></div>
           </body>
-        </html>""", str(tmpl.generate()))
+        </html>""", tmpl.generate().render(encoding=None))
 
     def test_match_with_once_attribute(self):
         tmpl = MarkupTemplate("""<html xmlns:py="http://genshi.edgewall.org/">
@@ -918,7 +922,7 @@
           <body>
             <p>Bar</p>
           </body>
-        </html>""", str(tmpl.generate()))
+        </html>""", tmpl.generate().render(encoding=None))
 
     def test_match_with_recursive_attribute(self):
         tmpl = MarkupTemplate("""<doc xmlns:py="http://genshi.edgewall.org/">
@@ -941,7 +945,7 @@
             </subelem>
             </div>
           </elem>
-        </doc>""", str(tmpl.generate()))
+        </doc>""", tmpl.generate().render(encoding=None))
 
     # FIXME
     #def test_match_after_step(self):
@@ -955,7 +959,7 @@
     #      <span>
     #        Hello Dude
     #      </span>
-    #    </div>""", str(tmpl.generate()))
+    #    </div>""", tmpl.generate().render(encoding=None))
 
 
 class ContentDirectiveTestCase(unittest.TestCase):
@@ -995,7 +999,7 @@
         </div>""", filename='test.html')
         self.assertEqual("""<div>
           Test
-        </div>""", str(tmpl.generate(title='Test')))
+        </div>""", tmpl.generate(title='Test').render(encoding=None))
 
 
 class StripDirectiveTestCase(unittest.TestCase):
@@ -1007,7 +1011,7 @@
         </div>""")
         self.assertEqual("""<div>
           <div><b>foo</b></div>
-        </div>""", str(tmpl.generate()))
+        </div>""", tmpl.generate().render(encoding=None))
 
     def test_strip_empty(self):
         tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
@@ -1015,7 +1019,7 @@
         </div>""")
         self.assertEqual("""<div>
           <b>foo</b>
-        </div>""", str(tmpl.generate()))
+        </div>""", tmpl.generate().render(encoding=None))
 
 
 class WithDirectiveTestCase(unittest.TestCase):
@@ -1031,7 +1035,7 @@
           42
           84
           42
-        </div>""", str(tmpl.generate(x=42)))
+        </div>""", tmpl.generate(x=42).render(encoding=None))
 
     def test_as_element(self):
         tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
@@ -1039,7 +1043,7 @@
         </div>""")
         self.assertEqual("""<div>
           84
-        </div>""", str(tmpl.generate(x=42)))
+        </div>""", tmpl.generate(x=42).render(encoding=None))
 
     def test_multiple_vars_same_name(self):
         tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
@@ -1052,7 +1056,7 @@
         </div>""")
         self.assertEqual("""<div>
             baz
-        </div>""", str(tmpl.generate(x=42)))
+        </div>""", tmpl.generate(x=42).render(encoding=None))
 
     def test_multiple_vars_single_assignment(self):
         tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
@@ -1060,7 +1064,7 @@
         </div>""")
         self.assertEqual("""<div>
           1 1 1
-        </div>""", str(tmpl.generate(x=42)))
+        </div>""", tmpl.generate(x=42).render(encoding=None))
 
     def test_nested_vars_single_assignment(self):
         tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
@@ -1068,7 +1072,7 @@
         </div>""")
         self.assertEqual("""<div>
           1 2 3
-        </div>""", str(tmpl.generate(x=42)))
+        </div>""", tmpl.generate(x=42).render(encoding=None))
 
     def test_multiple_vars_trailing_semicolon(self):
         tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
@@ -1076,7 +1080,7 @@
         </div>""")
         self.assertEqual("""<div>
           84 42
-        </div>""", str(tmpl.generate(x=42)))
+        </div>""", tmpl.generate(x=42).render(encoding=None))
 
     def test_semicolon_escape(self):
         tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
@@ -1088,7 +1092,7 @@
         self.assertEqual("""<div>
             here is a semicolon: ;
             here are two semicolons: ;;
-        </div>""", str(tmpl.generate()))
+        </div>""", tmpl.generate().render(encoding=None))
 
     def test_ast_transformation(self):
         """
@@ -1104,19 +1108,19 @@
           <span>
             42
           </span>
-        </div>""", str(tmpl.generate(foo={'bar': 42})))
+        </div>""", tmpl.generate(foo={'bar': 42}).render(encoding=None))
 
     def test_unicode_expr(self):
-        tmpl = MarkupTemplate("""<div xmlns:py="http://genshi.edgewall.org/">
+        tmpl = MarkupTemplate(u"""<div xmlns:py="http://genshi.edgewall.org/">
           <span py:with="weeks=(u'一', u'二', u'三', u'四', u'五', u'六', u'日')">
             $weeks
           </span>
         </div>""")
-        self.assertEqual("""<div>
+        self.assertEqual(u"""<div>
           <span>
             一二三四五六日
           </span>
-        </div>""", str(tmpl.generate()))
+        </div>""", tmpl.generate().render(encoding=None))
         
     def test_with_empty_value(self):
         """
@@ -1126,7 +1130,7 @@
           <span py:with="">Text</span></div>""")
 
         self.assertEqual("""<div>
-          <span>Text</span></div>""", str(tmpl.generate()))
+          <span>Text</span></div>""", tmpl.generate().render(encoding=None))
 
 
 def suite():
--- a/genshi/template/tests/loader.py
+++ b/genshi/template/tests/loader.py
@@ -58,7 +58,7 @@
         tmpl = loader.load('tmpl2.html')
         self.assertEqual("""<html>
               <div>Included</div>
-            </html>""", tmpl.generate().render())
+            </html>""", tmpl.generate().render(encoding=None))
 
     def test_relative_include_subdir(self):
         os.mkdir(os.path.join(self.dirname, 'sub'))
@@ -80,7 +80,7 @@
         tmpl = loader.load('tmpl2.html')
         self.assertEqual("""<html>
               <div>Included</div>
-            </html>""", tmpl.generate().render())
+            </html>""", tmpl.generate().render(encoding=None))
 
     def test_relative_include_parentdir(self):
         file1 = open(os.path.join(self.dirname, 'tmpl1.html'), 'w')
@@ -102,7 +102,7 @@
         tmpl = loader.load('sub/tmpl2.html')
         self.assertEqual("""<html>
               <div>Included</div>
-            </html>""", tmpl.generate().render())
+            </html>""", tmpl.generate().render(encoding=None))
 
     def test_relative_include_samesubdir(self):
         file1 = open(os.path.join(self.dirname, 'tmpl1.html'), 'w')
@@ -130,7 +130,7 @@
         tmpl = loader.load('sub/tmpl2.html')
         self.assertEqual("""<html>
               <div>Included sub/tmpl1.html</div>
-            </html>""", tmpl.generate().render())
+            </html>""", tmpl.generate().render(encoding=None))
 
     def test_relative_include_without_search_path(self):
         file1 = open(os.path.join(self.dirname, 'tmpl1.html'), 'w')
@@ -151,7 +151,7 @@
         tmpl = loader.load(os.path.join(self.dirname, 'tmpl2.html'))
         self.assertEqual("""<html>
               <div>Included</div>
-            </html>""", tmpl.generate().render())
+            </html>""", tmpl.generate().render(encoding=None))
 
     def test_relative_include_without_search_path_nested(self):
         file1 = open(os.path.join(self.dirname, 'tmpl1.html'), 'w')
@@ -182,7 +182,7 @@
               <div>
               <div>Included</div>
             </div>
-            </html>""", tmpl.generate().render())
+            </html>""", tmpl.generate().render(encoding=None))
 
     def test_relative_include_from_inmemory_template(self):
         file1 = open(os.path.join(self.dirname, 'tmpl1.html'), 'w')
@@ -198,7 +198,7 @@
 
         self.assertEqual("""<html>
           <div>Included</div>
-        </html>""", tmpl2.generate().render())
+        </html>""", tmpl2.generate().render(encoding=None))
 
     def test_relative_absolute_template_preferred(self):
         file1 = open(os.path.join(self.dirname, 'tmpl1.html'), 'w')
@@ -227,7 +227,7 @@
                                                         'tmpl2.html')))
         self.assertEqual("""<html>
               <div>Included from sub</div>
-            </html>""", tmpl.generate().render())
+            </html>""", tmpl.generate().render(encoding=None))
 
     def test_abspath_caching(self):
         abspath = os.path.join(self.dirname, 'abs')
@@ -258,7 +258,7 @@
         tmpl1 = loader.load(os.path.join(abspath, 'tmpl1.html'))
         self.assertEqual("""<html>
               <div>Included from searchpath.</div>
-            </html>""", tmpl1.generate().render())
+            </html>""", tmpl1.generate().render(encoding=None))
         assert 'tmpl2.html' in loader._cache
 
     def test_abspath_include_caching_without_search_path(self):
@@ -295,11 +295,11 @@
         tmpl1 = loader.load(os.path.join(self.dirname, 'tmpl1.html'))
         self.assertEqual("""<html>
               <div>Included</div>
-            </html>""", tmpl1.generate().render())
+            </html>""", tmpl1.generate().render(encoding=None))
         tmpl2 = loader.load(os.path.join(self.dirname, 'sub', 'tmpl1.html'))
         self.assertEqual("""<html>
               <div>Included from sub</div>
-            </html>""", tmpl2.generate().render())
+            </html>""", tmpl2.generate().render(encoding=None))
         assert 'tmpl2.html' not in loader._cache
 
     def test_load_with_default_encoding(self):
@@ -341,13 +341,13 @@
         tmpl = loader.load('tmpl.html')
         self.assertEqual("""<html>
               <p>Hello, hello</p>
-            </html>""", tmpl.generate().render())
+            </html>""", tmpl.generate().render(encoding=None))
 
         # Make sure the filter is only added once
         tmpl = loader.load('tmpl.html')
         self.assertEqual("""<html>
               <p>Hello, hello</p>
-            </html>""", tmpl.generate().render())
+            </html>""", tmpl.generate().render(encoding=None))
 
     def test_prefix_delegation_to_directories(self):
         """
@@ -393,7 +393,7 @@
         tmpl = loader.load('sub1/tmpl1.html')
         self.assertEqual("""<html>
               <div>Included foo</div> from sub1
-            </html>""", tmpl.generate().render())
+            </html>""", tmpl.generate().render(encoding=None))
 
     def test_prefix_delegation_to_directories_with_subdirs(self):
         """
@@ -449,7 +449,7 @@
               <div>Included foo</div> from sub1
               <div>tmpl2</div> from sub1
               <div>bar/tmpl3</div> from sub1
-            </html>""", tmpl.generate().render())
+            </html>""", tmpl.generate().render(encoding=None))
 
 
 def suite():
--- a/genshi/template/tests/markup.py
+++ b/genshi/template/tests/markup.py
@@ -277,7 +277,7 @@
             tmpl = loader.load('tmpl2.html')
             self.assertEqual("""<html>
                   <div>Included 0</div><div>Included 1</div><div>Included 2</div>
-                </html>""", tmpl.generate(name='tmpl1').render())
+                </html>""", tmpl.generate(name='tmpl1').render(encoding=None))
         finally:
             shutil.rmtree(dirname)
 
@@ -303,7 +303,7 @@
             tmpl = loader.load('tmpl2.html')
             self.assertEqual("""<html>
                   <div>Included</div>
-                </html>""", tmpl.generate(name='tmpl1').render())
+                </html>""", tmpl.generate(name='tmpl1').render(encoding=None))
         finally:
             shutil.rmtree(dirname)
 
@@ -332,7 +332,7 @@
             tmpl = loader.load('tmpl2.html')
             self.assertEqual("""<html>
                   <ul><li>1</li><li>2</li><li>3</li></ul>
-                </html>""", tmpl.generate().render())
+                </html>""", tmpl.generate().render(encoding=None))
         finally:
             shutil.rmtree(dirname)
 
@@ -358,7 +358,7 @@
             tmpl = loader.load('tmpl2.html')
             self.assertEqual("""<html>
                   <div>Included</div>
-                </html>""", tmpl.generate().render())
+                </html>""", tmpl.generate().render(encoding=None))
         finally:
             shutil.rmtree(dirname)
 
@@ -395,7 +395,7 @@
             tmpl = loader.load('tmpl2.html')
             self.assertEqual("""<html>
                   Missing
-                </html>""", tmpl.generate().render())
+                </html>""", tmpl.generate().render(encoding=None))
         finally:
             shutil.rmtree(dirname)
 
@@ -415,7 +415,7 @@
             tmpl = loader.load('tmpl2.html')
             self.assertEqual("""<html>
                     Missing
-                </html>""", tmpl.generate().render())
+                </html>""", tmpl.generate().render(encoding=None))
         finally:
             shutil.rmtree(dirname)
 
@@ -446,7 +446,7 @@
             tmpl = loader.load('tmpl3.html')
             self.assertEqual("""<html>
                       <div>Included</div>
-                </html>""", tmpl.generate().render())
+                </html>""", tmpl.generate().render(encoding=None))
         finally:
             shutil.rmtree(dirname)
 
@@ -471,7 +471,7 @@
             tmpl = loader.load('tmpl3.html')
             self.assertEqual("""<html>
                       Missing
-                </html>""", tmpl.generate().render())
+                </html>""", tmpl.generate().render(encoding=None))
         finally:
             shutil.rmtree(dirname)
 
@@ -500,7 +500,7 @@
             tmpl = loader.load('tmpl3.html')
             self.assertEqual("""<html>
                   <div>Included</div>
-                </html>""", tmpl.generate().render())
+                </html>""", tmpl.generate().render(encoding=None))
         finally:
             shutil.rmtree(dirname)
 
@@ -522,7 +522,7 @@
             tmpl = loader.load('tmpl2.html')
             self.assertEqual("""<html>
                     tmpl1.html not found
-                </html>""", tmpl.generate(debug=True).render())
+                </html>""", tmpl.generate(debug=True).render(encoding=None))
         finally:
             shutil.rmtree(dirname)
 
@@ -550,7 +550,7 @@
             self.assertEqual(7, len(tmpl.stream))
             self.assertEqual("""<html>
                   <div>Included</div>
-                </html>""", tmpl.generate().render())
+                </html>""", tmpl.generate().render(encoding=None))
         finally:
             shutil.rmtree(dirname)
 
@@ -576,7 +576,7 @@
             tmpl = loader.load('tmpl2.html')
             self.assertEqual("""<html>
                   <div>Included 0</div><div>Included 1</div><div>Included 2</div>
-                </html>""", tmpl.generate().render())
+                </html>""", tmpl.generate().render(encoding=None))
         finally:
             shutil.rmtree(dirname)
 
@@ -620,7 +620,7 @@
           <body>
             wakka wakka wakka
           </body>
-        </html>""", tmpl.generate().render())
+        </html>""", tmpl.generate().render(encoding=None))
 
     def test_with_in_match(self): 
         xml = ("""<html xmlns:py="http://genshi.edgewall.org/">
@@ -636,7 +636,7 @@
             <h1>bar</h1>
             <p>bar</p>
           </body>
-        </html>""", tmpl.generate().render())
+        </html>""", tmpl.generate().render(encoding=None))
 
     def test_nested_include_matches(self):
         # See ticket #157
@@ -688,7 +688,7 @@
   </div>
   </body>
 </html>
-""", tmpl.generate().render())
+""", tmpl.generate().render(encoding=None))
         finally:
             shutil.rmtree(dirname)
 
@@ -711,7 +711,7 @@
               <span>Foo</span>
               And some other stuff...
             </body>
-        </html>""", tmpl.generate().render())
+        </html>""", tmpl.generate().render(encoding=None))
 
     def test_match_without_select(self):
         # See <http://genshi.edgewall.org/ticket/243>
@@ -730,7 +730,7 @@
             <body>
               This replaces the other text.
             </body>
-        </html>""", tmpl.generate().render())
+        </html>""", tmpl.generate().render(encoding=None))
 
 
 def suite():
--- a/genshi/template/tests/text.py
+++ b/genshi/template/tests/text.py
@@ -33,22 +33,23 @@
 
     def test_escaping(self):
         tmpl = OldTextTemplate('\\#escaped')
-        self.assertEqual('#escaped', tmpl.generate().render())
+        self.assertEqual('#escaped', tmpl.generate().render(encoding=None))
 
     def test_comment(self):
         tmpl = OldTextTemplate('## a comment')
-        self.assertEqual('', tmpl.generate().render())
+        self.assertEqual('', tmpl.generate().render(encoding=None))
 
     def test_comment_escaping(self):
         tmpl = OldTextTemplate('\\## escaped comment')
-        self.assertEqual('## escaped comment', tmpl.generate().render())
+        self.assertEqual('## escaped comment',
+                         tmpl.generate().render(encoding=None))
 
     def test_end_with_args(self):
         tmpl = OldTextTemplate("""
         #if foo
           bar
         #end 'if foo'""")
-        self.assertEqual('\n', tmpl.generate(foo=False).render())
+        self.assertEqual('\n', tmpl.generate(foo=False).render(encoding=None))
 
     def test_latin1_encoded(self):
         text = u'$foo\xf6$bar'.encode('iso-8859-1')
@@ -73,7 +74,7 @@
           * 0
           * 1
           * 2
-""", tmpl.generate(items=range(3)).render())
+""", tmpl.generate(items=range(3)).render(encoding=None))
 
     def test_empty_lines2(self):
         tmpl = OldTextTemplate("""Your items:
@@ -90,7 +91,7 @@
 
           * 2
 
-""", tmpl.generate(items=range(3)).render())
+""", tmpl.generate(items=range(3)).render(encoding=None))
 
     def test_include(self):
         file1 = open(os.path.join(self.dirname, 'tmpl1.txt'), 'w')
@@ -112,7 +113,7 @@
         self.assertEqual("""----- Included data below this line -----
 Included
             ----- Included data above this line -----""",
-                         tmpl.generate().render())
+                         tmpl.generate().render(encoding=None))
 
 
 class NewTextTemplateTestCase(unittest.TestCase):
@@ -126,22 +127,24 @@
 
     def test_escaping(self):
         tmpl = NewTextTemplate('\\{% escaped %}')
-        self.assertEqual('{% escaped %}', tmpl.generate().render())
+        self.assertEqual('{% escaped %}',
+                         tmpl.generate().render(encoding=None))
 
     def test_comment(self):
         tmpl = NewTextTemplate('{# a comment #}')
-        self.assertEqual('', tmpl.generate().render())
+        self.assertEqual('', tmpl.generate().render(encoding=None))
 
     def test_comment_escaping(self):
         tmpl = NewTextTemplate('\\{# escaped comment #}')
-        self.assertEqual('{# escaped comment #}', tmpl.generate().render())
+        self.assertEqual('{# escaped comment #}',
+                         tmpl.generate().render(encoding=None))
 
     def test_end_with_args(self):
         tmpl = NewTextTemplate("""
 {% if foo %}
   bar
 {% end 'if foo' %}""")
-        self.assertEqual('\n', tmpl.generate(foo=False).render())
+        self.assertEqual('\n', tmpl.generate(foo=False).render(encoding=None))
 
     def test_latin1_encoded(self):
         text = u'$foo\xf6$bar'.encode('iso-8859-1')
@@ -166,7 +169,7 @@
   * 0
   * 1
   * 2
-""", tmpl.generate(items=range(3)).render())
+""", tmpl.generate(items=range(3)).render(encoding=None))
 
     def test_empty_lines2(self):
         tmpl = NewTextTemplate("""Your items:
@@ -183,7 +186,7 @@
 
   * 2
 
-""", tmpl.generate(items=range(3)).render())
+""", tmpl.generate(items=range(3)).render(encoding=None))
 
     def test_exec_with_trailing_space(self):
         """
@@ -202,7 +205,7 @@
         """)
         self.assertEqual("""
         2 days, 0:00:00
-        """, tmpl.generate().render())
+        """, tmpl.generate().render(encoding=None))
 
     def test_exec_def(self):
         tmpl = NewTextTemplate("""{% python
@@ -213,7 +216,7 @@
         """)
         self.assertEqual("""
         42
-        """, tmpl.generate().render())
+        """, tmpl.generate().render(encoding=None))
 
     def test_include(self):
         file1 = open(os.path.join(self.dirname, 'tmpl1.txt'), 'w')
@@ -234,7 +237,8 @@
         tmpl = loader.load('tmpl2.txt', cls=NewTextTemplate)
         self.assertEqual("""----- Included data below this line -----
 Included
------ Included data above this line -----""", tmpl.generate().render())
+----- Included data above this line -----""",
+                         tmpl.generate().render(encoding=None))
 
     def test_include_expr(self):
          file1 = open(os.path.join(self.dirname, 'tmpl1.txt'), 'w')
@@ -255,7 +259,8 @@
          tmpl = loader.load('tmpl2.txt', cls=NewTextTemplate)
          self.assertEqual("""----- Included data below this line -----
     Included
-    ----- Included data above this line -----""", tmpl.generate().render())
+    ----- Included data above this line -----""",
+                          tmpl.generate().render(encoding=None))
 
 
 def suite():
--- a/genshi/template/text.py
+++ b/genshi/template/text.py
@@ -61,7 +61,7 @@
     ...  * ${'Item %d' % item}
     ... {% end %}
     ... ''')
-    >>> print(tmpl.generate(name='Joe', items=[1, 2, 3]).render())
+    >>> print(tmpl.generate(name='Joe', items=[1, 2, 3]).render(encoding=None))
     Dear Joe,
     <BLANKLINE>
     <BLANKLINE>
@@ -86,7 +86,7 @@
     ...  * $item
     ... {% end %}\
     ... ''')
-    >>> print(tmpl.generate(name='Joe', items=[1, 2, 3]).render())
+    >>> print(tmpl.generate(name='Joe', items=[1, 2, 3]).render(encoding=None))
     Dear Joe,
     <BLANKLINE>
     We have the following items for you:
@@ -106,7 +106,7 @@
     ...  * $item
     ... {% end %}\
     ... ''')
-    >>> print(tmpl.generate(name='Joe', items=[1, 2, 3]).render())
+    >>> print(tmpl.generate(name='Joe', items=[1, 2, 3]).render(encoding=None))
     Dear Joe,
     <BLANKLINE>
     {# This is a comment #}
@@ -248,7 +248,7 @@
     ... 
     ... All the best,
     ... Foobar''')
-    >>> print(tmpl.generate(name='Joe', items=[1, 2, 3]).render())
+    >>> print(tmpl.generate(name='Joe', items=[1, 2, 3]).render(encoding=None))
     Dear Joe,
     <BLANKLINE>
     We have the following items for you:
Copyright (C) 2012-2017 Edgewall Software