Log message for revision 108036: Forward port better fix and test for LP #491224 from 2.8 branch.
Changed: U Zope/branches/2.11/lib/python/OFS/SimpleItem.py U Zope/branches/2.11/lib/python/OFS/tests/testSimpleItem.py -=- Modified: Zope/branches/2.11/lib/python/OFS/SimpleItem.py =================================================================== --- Zope/branches/2.11/lib/python/OFS/SimpleItem.py 2010-01-11 21:54:18 UTC (rev 108035) +++ Zope/branches/2.11/lib/python/OFS/SimpleItem.py 2010-01-11 21:57:47 UTC (rev 108036) @@ -36,7 +36,6 @@ from DocumentTemplate.ustr import ustr from ExtensionClass import Base from webdav.Resource import Resource -from webdav.xmltools import escape as xml_escape from zExceptions import Redirect from zExceptions.ExceptionFormatter import format_exception from zope.interface import implements @@ -234,7 +233,7 @@ exc_info=True ) try: - strv = str(error_value) + strv = repr(error_value) # quotes tainted strings except: strv = ('<unprintable %s object>' % str(type(error_value).__name__)) @@ -244,7 +243,6 @@ "event log for full details: %s)")%( html_quote(sys.exc_info()[1]), )) - v = xml_escape(v) raise error_type, v, tb finally: if hasattr(self, '_v_eek'): del self._v_eek Modified: Zope/branches/2.11/lib/python/OFS/tests/testSimpleItem.py =================================================================== --- Zope/branches/2.11/lib/python/OFS/tests/testSimpleItem.py 2010-01-11 21:54:18 UTC (rev 108035) +++ Zope/branches/2.11/lib/python/OFS/tests/testSimpleItem.py 2010-01-11 21:57:47 UTC (rev 108036) @@ -3,16 +3,62 @@ class TestItem(unittest.TestCase): - def test_z3interfaces(self): + def _getTargetClass(self): + from OFS.SimpleItem import Item + return Item + + def _makeOne(self, *args, **kw): + return self._getTargetClass()(*args, **kw) + + def test_conforms_to_IItem(self): from OFS.interfaces import IItem + from zope.interface.verify import verifyClass + + verifyClass(IItem, self._getTargetClass()) + + def test_conforms_to_IManageable(self): from OFS.interfaces import IManageable - from OFS.SimpleItem import Item from zope.interface.verify import verifyClass - verifyClass(IItem, Item) - verifyClass(IManageable, Item) + verifyClass(IManageable, self._getTargetClass()) + def test_raise_StandardErrorMessage_str_errorValue(self): + item = self._makeOne() + def _raise_during_standard_error_message(*args, **kw): + raise ZeroDivisionError('testing') + item.standard_error_message = _raise_during_standard_error_message + try: + item.raise_standardErrorMessage( + error_type=OverflowError, + error_value='simple', + REQUEST={'dummy': ''}, + ) + except: + import sys + self.assertEqual(sys.exc_info()[0], 'OverflowError') + value = sys.exc_info()[1] + self.failUnless(value.startswith("'simple'")) + self.failUnless('full details: testing' in value) + def test_raise_StandardErrorMessage_TaintedString_errorValue(self): + from ZPublisher.TaintedString import TaintedString + item = self._makeOne() + def _raise_during_standard_error_message(*args, **kw): + raise ZeroDivisionError('testing') + item.standard_error_message = _raise_during_standard_error_message + try: + item.raise_standardErrorMessage( + error_type=OverflowError, + error_value=TaintedString('<simple>'), + REQUEST={'dummy': ''}, + ) + except: + import sys + self.assertEqual(sys.exc_info()[0], 'OverflowError') + value = sys.exc_info()[1] + self.failIf('<' in value) + + class TestItem_w__name__(unittest.TestCase): def test_z3interfaces(self): _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins