[z3-checkins] r9615 - in z3/Five/trunk: . tests
tests/products/FiveTest
dreamcatcher at codespeak.net
dreamcatcher at codespeak.net
Thu Mar 3 20:08:01 MET 2005
Author: dreamcatcher
Date: Thu Mar 3 20:08:01 2005
New Revision: 9615
Added:
z3/Five/trunk/makefile.in
- copied unchanged from r9614, z3/Five/branch/dc-traversal-issue/makefile.in
z3/Five/trunk/tests/products/FiveTest/tales_traversal.pt (props changed)
- copied unchanged from r9614, z3/Five/branch/dc-traversal-issue/tests/products/FiveTest/tales_traversal.pt
Modified:
z3/Five/trunk/tests/test_five.py
z3/Five/trunk/traversable.py
Log:
Merge dc-traversal-issue, now that Zope 2.7.4 is out and kicking.
A fix has been checked in and is present in Zope 2.7.4 to detect AttributeError on __bobo_traverse__ and behave accordingly.
Modified: z3/Five/trunk/tests/test_five.py
==============================================================================
--- z3/Five/trunk/tests/test_five.py (original)
+++ z3/Five/trunk/tests/test_five.py Thu Mar 3 20:08:01 2005
@@ -237,9 +237,9 @@
view = self.folder.unrestrictedTraverse(base % macro)
self.failUnless(view)
- def test_ignore_new_style_class(self):
- view = self.folder.unrestrictedTraverse('testoid/@@invalid_page')
- self.assertEquals(view, None)
+ def test_unrestrictedTraverse_non_existing(self):
+ self.assertRaises(AttributeError, self.folder.unrestrictedTraverse,
+ 'testoid/@@invalid_page')
def test_get_widgets_for_schema_fields(self):
salutation = Choice(title=u'Salutation', values=("Mr.", "Mrs.", "Captain", "Don"))
@@ -278,6 +278,10 @@
self.assertEquals("No docstring", response.getBody())
def test_fallback_raises_notfound(self):
+ # If we return None in __fallback_traverse__, this test passes
+ # but for the wrong reason: None doesn't have a docstring so
+ # BaseRequest raises NotFoundError. A functional test would be
+ # perfect here.
response = self.publish('/test_folder_1_/testoid/doesntexist')
self.assertEquals(404, response.getStatus())
Modified: z3/Five/trunk/traversable.py
==============================================================================
--- z3/Five/trunk/traversable.py (original)
+++ z3/Five/trunk/traversable.py Thu Mar 3 20:08:01 2005
@@ -46,7 +46,7 @@
"""
if getattr(thread_local, 'interaction', None) is None:
thread_local.interaction = getSecurityManager()
-
+
class Traversable:
"""A mixin to make an object traversable using an ITraverser adapter.
"""
@@ -58,10 +58,10 @@
This method is called by __bobo_traverse___ when Zope3-style
ITraverser traversal fails.
- By default, we return None. This should be enough
- as far as Zope 2 is concerned to trigger acquisition.
+ Just raise a AttributeError to indicate traversal has failed
+ and let Zope do it's job.
"""
- return None
+ raise AttributeError, name
def __bobo_traverse__(self, REQUEST, name):
"""Hook for Zope 2 traversal
@@ -111,4 +111,3 @@
pass
# If a view can't be found, then use default traversable
return super(FiveTraversable, self).traverse(name, furtherPath)
-
More information about the z3-checkins
mailing list