[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