[Checkins] SVN: zope.traversing/trunk/ - Made sure traversing doesn't raise an TypeError but a TraversalError when the

Christian Zagrodnick cz at gocept.com
Fri Aug 1 09:41:54 EDT 2008


Log message for revision 89149:
  - Made sure traversing doesn't raise an TypeError but a TraversalError when the
    traversal step before yielded a string.
  
  

Changed:
  U   zope.traversing/trunk/CHANGES.txt
  U   zope.traversing/trunk/src/zope/traversing/adapters.py
  U   zope.traversing/trunk/src/zope/traversing/tests/test_traverser.py

-=-
Modified: zope.traversing/trunk/CHANGES.txt
===================================================================
--- zope.traversing/trunk/CHANGES.txt	2008-08-01 13:34:27 UTC (rev 89148)
+++ zope.traversing/trunk/CHANGES.txt	2008-08-01 13:41:54 UTC (rev 89149)
@@ -9,7 +9,10 @@
   compliant TAL interpreter as available in zope.tal >= 3.5.0.
 - Fixed deprecation warning caused by using an old module name for
   ZopeSecurityPolicy in ftesting.zcml
+- Made sure traversing doesn't raise an TypeError but a TraversalError when the
+  traversal step before yielded a string.
 
+
 3.5.0a3 (2007-12-28)
 --------------------
 

Modified: zope.traversing/trunk/src/zope/traversing/adapters.py
===================================================================
--- zope.traversing/trunk/src/zope/traversing/adapters.py	2008-08-01 13:34:27 UTC (rev 89148)
+++ zope.traversing/trunk/src/zope/traversing/adapters.py	2008-08-01 13:41:54 UTC (rev 89149)
@@ -47,7 +47,7 @@
         if hasattr(subject, '__getitem__'):
             try:
                 return subject[name]
-            except KeyError:
+            except (KeyError, TypeError):
                 pass
         raise TraversalError(subject, name)
 

Modified: zope.traversing/trunk/src/zope/traversing/tests/test_traverser.py
===================================================================
--- zope.traversing/trunk/src/zope/traversing/tests/test_traverser.py	2008-08-01 13:34:27 UTC (rev 89148)
+++ zope.traversing/trunk/src/zope/traversing/tests/test_traverser.py	2008-08-01 13:41:54 UTC (rev 89149)
@@ -158,6 +158,13 @@
         self.assertEqual(tr.traverse('anotherdict/items'),
                          adict['anotherdict'].items)
 
+    def testTraversingDoesntFailOnStrings(self):
+        adict = {'foo': 'bar'}
+        tr = Traverser(adict)
+        # This used to raise type error before
+        self.assertRaises(TraversalError, tr.traverse, 'foo/baz')
+
+
 class RestrictedTraverseTests(PlacefulSetup, unittest.TestCase):
     _oldPolicy = None
     _deniedNames = ()



More information about the Checkins mailing list