[Zope-Checkins] SVN: Zope/branches/2.9/ Collector #2263:
'field2ulines' did not convert empty string correctly.
Tres Seaver
tseaver at palladion.com
Thu Jan 11 16:28:16 EST 2007
Log message for revision 71939:
Collector #2263: 'field2ulines' did not convert empty string correctly.
o Forward-port from 2.8 branch.
Changed:
U Zope/branches/2.9/doc/CHANGES.txt
U Zope/branches/2.9/lib/python/ZPublisher/Converters.py
A Zope/branches/2.9/lib/python/ZPublisher/tests/test_Converters.py
-=-
Modified: Zope/branches/2.9/doc/CHANGES.txt
===================================================================
--- Zope/branches/2.9/doc/CHANGES.txt 2007-01-11 20:57:52 UTC (rev 71938)
+++ Zope/branches/2.9/doc/CHANGES.txt 2007-01-11 21:28:15 UTC (rev 71939)
@@ -8,6 +8,9 @@
Bugs fixed
+ - Collector #2263: 'field2ulines' did not convert empty string
+ correctly.
+
- Reverted backward-incompatible fix for Collector #2191.
- added Python 2.4.4 as optimal Python version to 'configure'
Modified: Zope/branches/2.9/lib/python/ZPublisher/Converters.py
===================================================================
--- Zope/branches/2.9/lib/python/ZPublisher/Converters.py 2007-01-11 20:57:52 UTC (rev 71938)
+++ Zope/branches/2.9/lib/python/ZPublisher/Converters.py 2007-01-11 21:28:15 UTC (rev 71939)
@@ -154,9 +154,18 @@
return unicode(field2text(v.encode('utf8')),'utf8')
field2utext = field2utext()
-class field2ulines(_unicode_converter):
- def convert_unicode(self,v):
- return field2utext.convert_unicode(v).split('\n')
+class field2ulines:
+ def __call__(self, v):
+ if hasattr(v,'read'):
+ v=v.read()
+ if isinstance(v, (ListType, TupleType)):
+ return [field2ustring(x) for x in v]
+ v = unicode(v)
+ return self.convert_unicode(v)
+
+ def convert_unicode(self, v):
+ return field2utext.convert_unicode(v).splitlines()
+
field2ulines = field2ulines()
type_converters = {
Added: Zope/branches/2.9/lib/python/ZPublisher/tests/test_Converters.py
===================================================================
--- Zope/branches/2.9/lib/python/ZPublisher/tests/test_Converters.py 2007-01-11 20:57:52 UTC (rev 71938)
+++ Zope/branches/2.9/lib/python/ZPublisher/tests/test_Converters.py 2007-01-11 21:28:15 UTC (rev 71939)
@@ -0,0 +1,118 @@
+################################################################################
+#
+# Copyright (c) 2006 Zope Corporation and Contributors. All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.0 (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
+#
+################################################################################
+
+import unittest
+
+class ConvertersTests(unittest.TestCase):
+
+ def test_field2string_with_string(self):
+ from ZPublisher.Converters import field2string
+ to_convert = 'to_convert'
+ self.assertEqual(field2string(to_convert), to_convert)
+
+ def test_field2string_with_unicode_default_encoding(self):
+ from ZPublisher.Converters import field2string
+ to_convert = u'to_convert'
+ self.assertEqual(field2string(to_convert),
+ to_convert.encode('iso-8859-15'))
+
+ def test_field2string_with_filelike_object(self):
+ from ZPublisher.Converters import field2string
+ to_convert = 'to_convert'
+ class Filelike:
+ def read(self):
+ return to_convert
+ self.assertEqual(field2string(Filelike()), to_convert)
+
+ #TODO def test_field2text....
+
+ #TODO def test_field2required....
+
+ #TODO def test_field2int....
+
+ #TODO def test_field2float....
+
+ #TODO def test_field2tokens....
+
+ def test_field2lines_with_list(self):
+ from ZPublisher.Converters import field2lines
+ to_convert = ['one', 'two']
+ self.assertEqual(field2lines(to_convert), to_convert)
+
+ def test_field2lines_with_tuple(self):
+ from ZPublisher.Converters import field2lines
+ to_convert = ('one', 'two')
+ self.assertEqual(field2lines(to_convert), list(to_convert))
+
+ def test_field2lines_with_empty_string(self):
+ from ZPublisher.Converters import field2lines
+ to_convert = ''
+ self.assertEqual(field2lines(to_convert), [])
+
+ def test_field2lines_with_string_no_newlines(self):
+ from ZPublisher.Converters import field2lines
+ to_convert = 'abc def ghi'
+ self.assertEqual(field2lines(to_convert), [to_convert])
+
+ def test_field2lines_with_string_with_newlines(self):
+ from ZPublisher.Converters import field2lines
+ to_convert = 'abc\ndef\nghi'
+ self.assertEqual(field2lines(to_convert), to_convert.splitlines())
+
+
+ #TODO def test_field2date....
+
+ #TODO def test_field2date_international....
+
+ #TODO def test_field2boolean....
+
+ #TODO def test_field2ustring....
+
+ #TODO def test_field2utokens....
+
+ #TODO def test_field2utext....
+
+ def test_field2ulines_with_list(self):
+ from ZPublisher.Converters import field2ulines
+ to_convert = [u'one', 'two']
+ self.assertEqual(field2ulines(to_convert),
+ [unicode(x) for x in to_convert])
+
+ def test_field2ulines_with_tuple(self):
+ from ZPublisher.Converters import field2ulines
+ to_convert = (u'one', 'two')
+ self.assertEqual(field2ulines(to_convert),
+ [unicode(x) for x in to_convert])
+
+ def test_field2ulines_with_empty_string(self):
+ from ZPublisher.Converters import field2ulines
+ to_convert = ''
+ self.assertEqual(field2ulines(to_convert), [])
+
+ def test_field2ulines_with_string_no_newlines(self):
+ from ZPublisher.Converters import field2ulines
+ to_convert = u'abc def ghi'
+ self.assertEqual(field2ulines(to_convert), [to_convert])
+
+ def test_field2ulines_with_string_with_newlines(self):
+ from ZPublisher.Converters import field2ulines
+ to_convert = u'abc\ndef\nghi'
+ self.assertEqual(field2ulines(to_convert), to_convert.splitlines())
+
+
+
+def test_suite():
+ return unittest.TestSuite((unittest.makeSuite(ConvertersTests),))
+
+if __name__ == '__main__':
+ unittest.main(defaultTest='test_suite')
Property changes on: Zope/branches/2.9/lib/python/ZPublisher/tests/test_Converters.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
More information about the Zope-Checkins
mailing list