diff options
author | Philipp von Weitershausen <philipp@weitershausen.de> | 2007-01-14 13:45:26 +0000 |
---|---|---|
committer | Philipp von Weitershausen <philipp@weitershausen.de> | 2007-01-14 13:45:26 +0000 |
commit | 16ebbdf9ec85dd42de4abc8546fb5af782b20109 (patch) | |
tree | e8914522986f25894ad5b94c5cc75f0a6857a00a | |
parent | 19bbd906747c198d6258d38f10ba6499aec1ebf9 (diff) | |
download | zope-pagetemplate-monolithic-zope3-3.3.tar.gz |
zope.tal.xmlparser.XMLParser couldn't deal with unicode strings, which meant thatmonolithic-zope3-3.3
PageTemplates in XML mode whose source code was available as a unicode string failed.
Fixed the problem and added a test that exercises a PT w/ unicode source in XML mode
(HTML mode already worked).
-rw-r--r-- | tests/test_basictemplate.py | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/tests/test_basictemplate.py b/tests/test_basictemplate.py new file mode 100644 index 0000000..23188e1 --- /dev/null +++ b/tests/test_basictemplate.py @@ -0,0 +1,182 @@ +############################################################################## +# +# Copyright (c) 2001, 2002 Zope Corporation and Contributors. +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# +############################################################################## +"""Basic Page Template tests + +$Id$ +""" +import unittest + +from zope.pagetemplate.tests import util +from zope.pagetemplate.pagetemplate import PageTemplate + +class BasicTemplateTests(unittest.TestCase): + + def setUp(self): + self.t = PageTemplate() + + def test_if_in_var(self): + # DTML test 1: if, in, and var: + pass # for unittest + """ + %(comment)[ blah %(comment)] + <html><head><title>Test of documentation templates</title></head> + <body> + %(if args)[ + <dl><dt>The arguments to this test program were:<p> + <dd> + <ul> + %(in args)[ + <li>Argument number %(num)d was %(arg)s + %(in args)] + </ul></dl><p> + %(if args)] + %(else args)[ + No arguments were given.<p> + %(else args)] + And thats da trooth. + </body></html> + """ + tal = util.read_input('dtml1.html') + self.t.write(tal) + + aa = util.argv(('one', 'two', 'three', 'cha', 'cha', 'cha')) + o = self.t(content=aa) + expect = util.read_output('dtml1a.html') + + util.check_xml(expect, o) + + aa = util.argv(()) + o = self.t(content=aa) + expect = util.read_output('dtml1b.html') + util.check_xml(expect, o) + + def test_template_usage(self): + tal = util.read_input('template_usage.html') + self.t.write(tal) + + o = self.t(template_usage=u"test") + expect = util.read_output('template_usage1.html') + util.check_xml(expect, o) + + o = self.t(template_usage=u"retest") + expect = util.read_output('template_usage2.html') + util.check_xml(expect, o) + + o = self.t(template_usage=u"other") + expect = util.read_output('template_usage3.html') + util.check_xml(expect, o) + + o = self.t(template_usage=u"") + expect = util.read_output('template_usage4.html') + util.check_xml(expect, o) + + def test_batches_and_formatting(self): + # DTML test 3: batches and formatting: + pass # for unittest + """ + <html><head><title>Test of documentation templates</title></head> + <body> + <!--#if args--> + The arguments were: + <!--#in args size=size end=end--> + <!--#if previous-sequence--> + (<!--#var previous-sequence-start-arg-->- + <!--#var previous-sequence-end-arg-->) + <!--#/if previous-sequence--> + <!--#if sequence-start--> + <dl> + <!--#/if sequence-start--> + <dt><!--#var sequence-arg-->.</dt> + <dd>Argument <!--#var num fmt=d--> was <!--#var arg--></dd> + <!--#if next-sequence--> + (<!--#var next-sequence-start-arg-->- + <!--#var next-sequence-end-arg-->) + <!--#/if next-sequence--> + <!--#/in args--> + </dl> + <!--#else args--> + No arguments were given.<p> + <!--#/if args--> + And I\'m 100% sure! + </body></html> + """ + tal = util.read_input('dtml3.html') + self.t.write(tal) + + aa = util.argv(('one', 'two', 'three', 'four', 'five', + 'six', 'seven', 'eight', 'nine', 'ten', + 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', + 'sixteen', 'seventeen', 'eighteen', 'nineteen', + 'twenty', + )) + from zope.pagetemplate.tests import batch + o = self.t(content=aa, batch=batch.batch(aa.args, 5)) + + expect = util.read_output('dtml3.html') + util.check_xml(expect, o) + + def test_on_error_in_slot_filler(self): + # The `here` isn't defined, so the macro definition is + # expected to catch the error that gets raised. + text = '''\ + <div metal:define-macro="foo"> + <div tal:on-error="string:eek"> + <div metal:define-slot="slot" /> + cool + </div> + </div> + + <div metal:use-macro="template/macros/foo"> + <div metal:fill-slot="slot"> + <p tal:content="here/xxx" /> + </div> + </div> + ''' + self.t.write(text) + self.t() + + def test_on_error_in_slot_default(self): + # The `here` isn't defined, so the macro definition is + # expected to catch the error that gets raised. + text = '''\ + <div metal:define-macro="foo"> + <div tal:on-error="string:eek"> + <div metal:define-slot="slot"> + <div tal:content="here/xxx" /> + </div> + </div> + </div> + + <div metal:use-macro="template/macros/foo"> + </div> + ''' + self.t.write(text) + self.t() + + def test_unicode_html(self): + text = u'<p>\xe4\xf6\xfc\xdf</p>' + + # test with HTML parser + self.t.pt_edit(text, 'text/html') + self.assertEquals(self.t().strip(), text) + + # test with XML parser + self.t.pt_edit(text, 'text/xml') + self.assertEquals(self.t().strip(), text) + +def test_suite(): + return unittest.makeSuite(BasicTemplateTests) + +if __name__ == '__main__': + unittest.TextTestRunner().run(test_suite()) |