[Checkins] SVN: grok/trunk/src/grok/ make sure that bogus uses of @grok.traverse aren't allowed.

Philipp von Weitershausen philikon at philikon.de
Thu Oct 19 04:19:53 EDT 2006


Log message for revision 70798:
  make sure that bogus uses of @grok.traverse aren't allowed.
  

Changed:
  U   grok/trunk/src/grok/_grok.py
  U   grok/trunk/src/grok/tests/test_grok.py
  A   grok/trunk/src/grok/tests/traversal/
  A   grok/trunk/src/grok/tests/traversal/__init__.py
  A   grok/trunk/src/grok/tests/traversal/bogustraverse.py

-=-
Modified: grok/trunk/src/grok/_grok.py
===================================================================
--- grok/trunk/src/grok/_grok.py	2006-10-19 08:06:38 UTC (rev 70797)
+++ grok/trunk/src/grok/_grok.py	2006-10-19 08:19:51 UTC (rev 70798)
@@ -353,4 +353,7 @@
         raise GrokImportError("@grok.traverse can only be used on class "
                               "level.")
 
+    if '__grok_traverse__' in frame.f_locals:
+        raise GrokImportError("@grok.traverse can only be used once per class.")
+
     frame.f_locals['__grok_traverse__'] = function

Modified: grok/trunk/src/grok/tests/test_grok.py
===================================================================
--- grok/trunk/src/grok/tests/test_grok.py	2006-10-19 08:06:38 UTC (rev 70797)
+++ grok/trunk/src/grok/tests/test_grok.py	2006-10-19 08:19:51 UTC (rev 70798)
@@ -32,8 +32,9 @@
 
 def test_suite():
     suite = unittest.TestSuite()
-    for name in ['adapter', 'error', 'view', 'security', 'scan',
-                 'event', 'zcml', 'static', 'utility', 'xmlrpc', 'container']:
+    for name in ['adapter', 'error', 'view', 'security', 'scan', 'event',
+                 'zcml', 'static', 'utility', 'xmlrpc', 'container',
+                 'traversal']:
         suite.addTest(suiteFromPackage(name))
     return suite
 

Copied: grok/trunk/src/grok/tests/traversal/__init__.py (from rev 70796, grok/trunk/src/grok/tests/__init__.py)

Added: grok/trunk/src/grok/tests/traversal/bogustraverse.py
===================================================================
--- grok/trunk/src/grok/tests/traversal/bogustraverse.py	2006-10-19 08:06:38 UTC (rev 70797)
+++ grok/trunk/src/grok/tests/traversal/bogustraverse.py	2006-10-19 08:19:51 UTC (rev 70798)
@@ -0,0 +1,35 @@
+"""
+You can't use @grok.traverse more than once on a class:
+
+  >>> using_traverse_twice()
+  Traceback (most recent call last):
+   ...
+  GrokImportError: @grok.traverse can only be used once per class.
+
+You can't use @grok.traverse outside a class definition:
+
+  >>> outside_class()
+  Traceback (most recent call last):
+   ...
+  GrokImportError: @grok.traverse can only be used on class level.
+
+
+"""
+import grok
+
+def using_traverse_twice():
+    class Herd(grok.Model):
+
+        @grok.traverse
+        def getMammoth(self, name):
+            pass
+
+        @grok.traverse
+        def getAntilope(self, name):
+            pass
+
+def outside_class():
+
+    @grok.traverse
+    def getMammoth(self, name):
+        pass


Property changes on: grok/trunk/src/grok/tests/traversal/bogustraverse.py
___________________________________________________________________
Name: svn:eol-style
   + native



More information about the Checkins mailing list