[z3-checkins] r21754 - in z3/Five/branch/Five-1.2: . browser/tests
efge at codespeak.net
efge at codespeak.net
Fri Jan 6 19:01:54 CET 2006
Author: efge
Date: Fri Jan 6 19:01:54 2006
New Revision: 21754
Modified:
z3/Five/branch/Five-1.2/CHANGES.txt
z3/Five/branch/Five-1.2/browser/tests/test_traversable.py
z3/Five/branch/Five-1.2/fiveconfigure.py
z3/Five/branch/Five-1.2/traversable.py
Log:
Fix cleanup of five:traversable.
Modified: z3/Five/branch/Five-1.2/CHANGES.txt
==============================================================================
--- z3/Five/branch/Five-1.2/CHANGES.txt (original)
+++ z3/Five/branch/Five-1.2/CHANGES.txt Fri Jan 6 19:01:54 2006
@@ -17,6 +17,8 @@
* Made Five send a ContainerModifiedEvent when appropriate.
+* Fix cleanup of five:traversable.
+
Restructuring
-------------
Modified: z3/Five/branch/Five-1.2/browser/tests/test_traversable.py
==============================================================================
--- z3/Five/branch/Five-1.2/browser/tests/test_traversable.py (original)
+++ z3/Five/branch/Five-1.2/browser/tests/test_traversable.py Fri Jan 6 19:01:54 2006
@@ -19,6 +19,11 @@
if __name__ == '__main__':
execfile(os.path.join(sys.path[0], 'framework.py'))
+
+class SimpleClass(object):
+ """Class with no __bobo_traverse__."""
+
+
def test_traversable():
"""
Test the behaviour of Five-traversable classes.
@@ -56,6 +61,9 @@
... <five:traversable
... class="Products.Five.tests.testing.fancycontent.FancyContent"
... />
+ ... <five:traversable
+ ... class="Products.Five.browser.tests.test_traversable.SimpleClass"
+ ... />
...
... <browser:page
... for="Products.Five.tests.testing.fancycontent.IFancyContent"
@@ -96,6 +104,22 @@
>>> from zope.app.tests.placelesssetup import tearDown
>>> tearDown()
+
+ Verify that after cleanup, there's no cruft left from five:traversable::
+
+ >>> from Products.Five.browser.tests.test_traversable import SimpleClass
+ >>> hasattr(SimpleClass, '__bobo_traverse__')
+ False
+ >>> hasattr(SimpleClass, '__fallback_traverse__')
+ False
+
+ >>> from Products.Five.tests.testing.fancycontent import FancyContent
+ >>> hasattr(FancyContent, '__bobo_traverse__')
+ True
+ >>> hasattr(FancyContent.__bobo_traverse__, '__five_method__')
+ False
+ >>> hasattr(FancyContent, '__fallback_traverse__')
+ False
"""
def test_suite():
Modified: z3/Five/branch/Five-1.2/fiveconfigure.py
==============================================================================
--- z3/Five/branch/Five-1.2/fiveconfigure.py (original)
+++ z3/Five/branch/Five-1.2/fiveconfigure.py Fri Jan 6 19:01:54 2006
@@ -267,12 +267,14 @@
method = getattr(class_, name, None)
if isFiveMethod(method):
original = getattr(class_, fallback, None)
- if original is None:
+ if original is not None:
+ delattr(class_, fallback)
+ if original is None or isFiveMethod(original):
try:
delattr(class_, name)
except AttributeError:
pass
- else:
+ else:
setattr(class_, name, original)
if attr is not None:
Modified: z3/Five/branch/Five-1.2/traversable.py
==============================================================================
--- z3/Five/branch/Five-1.2/traversable.py (original)
+++ z3/Five/branch/Five-1.2/traversable.py Fri Jan 6 19:01:54 2006
@@ -56,6 +56,7 @@
and let Zope do it's job.
"""
raise AttributeError, name
+ __fallback_traverse__.__five_method__ = True
def __bobo_traverse__(self, REQUEST, name):
"""Hook for Zope 2 traversal
More information about the z3-checkins
mailing list