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 _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins