[Checkins] SVN: Acquisition/trunk/ - Fixed bug: When an object did not implement ``__unicode__``, calling
Christian Zagrodnick
cz at gocept.com
Tue Mar 1 14:56:04 EST 2011
Log message for revision 120651:
- Fixed bug: When an object did not implement ``__unicode__``, calling
``unicode(wrapped)`` was calling ``__str__`` with an unwrapped ``self``.
(reported by David Glick on zope-dev)
Changed:
U Acquisition/trunk/CHANGES.txt
U Acquisition/trunk/src/Acquisition/_Acquisition.c
U Acquisition/trunk/src/Acquisition/tests.py
-=-
Modified: Acquisition/trunk/CHANGES.txt
===================================================================
--- Acquisition/trunk/CHANGES.txt 2011-03-01 19:40:37 UTC (rev 120650)
+++ Acquisition/trunk/CHANGES.txt 2011-03-01 19:56:03 UTC (rev 120651)
@@ -4,7 +4,10 @@
2.13.7 (unreleased)
-------------------
+- Fixed bug: When an object did not implement ``__unicode__``, calling
+ ``unicode(wrapped)`` was calling ``__str__`` with an unwrapped ``self``.
+
2.13.6 (2011-02-19)
-------------------
Modified: Acquisition/trunk/src/Acquisition/_Acquisition.c
===================================================================
--- Acquisition/trunk/src/Acquisition/_Acquisition.c 2011-03-01 19:40:37 UTC (rev 120650)
+++ Acquisition/trunk/src/Acquisition/_Acquisition.c 2011-03-01 19:56:03 UTC (rev 120651)
@@ -853,7 +853,7 @@
else
{
PyErr_Clear();
- return PyObject_Unicode(self->obj);
+ return Wrapper_str(self);
}
}
Modified: Acquisition/trunk/src/Acquisition/tests.py
===================================================================
--- Acquisition/trunk/src/Acquisition/tests.py 2011-03-01 19:40:37 UTC (rev 120650)
+++ Acquisition/trunk/src/Acquisition/tests.py 2011-03-01 19:56:03 UTC (rev 120651)
@@ -2501,7 +2501,23 @@
self.assertEqual(u'str was called', unicode(wrapped))
self.assertEqual('str was called', str(wrapped))
+ def test_str_fallback_should_be_called_with_wrapped_self(self):
+ class A(Acquisition.Implicit):
+ def __str__(self):
+ return str(self.aq_parent == outer)
+ outer = A()
+ inner = A().__of__(outer)
+ self.assertEqual(u'True', unicode(inner))
+ def test_unicode_should_be_called_with_wrapped_self(self):
+ class A(Acquisition.Implicit):
+ def __unicode__(self):
+ return str(self.aq_parent == outer)
+ outer = A()
+ inner = A().__of__(outer)
+ self.assertEqual(u'True', unicode(inner))
+
+
def test_suite():
return unittest.TestSuite((
DocTestSuite(),
More information about the checkins
mailing list