[Checkins] SVN: AccessControl/trunk/src/AccessControl/ added test for rolesForPermissionOn fix by yusei
Hano Schlichting
cvs-admin at zope.org
Thu Aug 23 14:05:18 UTC 2012
Log message for revision 127549:
added test for rolesForPermissionOn fix by yusei
Changed:
U AccessControl/trunk/src/AccessControl/ZopeSecurityPolicy.py
U AccessControl/trunk/src/AccessControl/tests/testZopeSecurityPolicy.py
-=-
Modified: AccessControl/trunk/src/AccessControl/ZopeSecurityPolicy.py
===================================================================
--- AccessControl/trunk/src/AccessControl/ZopeSecurityPolicy.py 2012-08-22 12:42:53 UTC (rev 127548)
+++ AccessControl/trunk/src/AccessControl/ZopeSecurityPolicy.py 2012-08-23 14:05:14 UTC (rev 127549)
@@ -52,8 +52,7 @@
if roles is None or isinstance(roles, tuple_or_list):
return roles
- # XXX: Do not override global variable `rolesForPermissionOn`.
- # XXX: Use different variable name instead.
+ # Do not override global variable `rolesForPermissionOn`.
roles_rolesForPermissionOn = getattr(roles, 'rolesForPermissionOn', None)
if roles_rolesForPermissionOn is not None:
roles = roles_rolesForPermissionOn(value)
Modified: AccessControl/trunk/src/AccessControl/tests/testZopeSecurityPolicy.py
===================================================================
--- AccessControl/trunk/src/AccessControl/tests/testZopeSecurityPolicy.py 2012-08-22 12:42:53 UTC (rev 127548)
+++ AccessControl/trunk/src/AccessControl/tests/testZopeSecurityPolicy.py 2012-08-23 14:05:14 UTC (rev 127549)
@@ -10,11 +10,10 @@
# FOR A PARTICULAR PURPOSE
#
##############################################################################
-"""Tests of ZopeSecurityPolicy
-"""
from doctest import DocTestSuite
import sys
+import thread
import unittest
from Acquisition import Implicit, Explicit
@@ -569,9 +568,58 @@
"""
+class GetRolesWithMultiThreadTest(unittest.TestCase):
+
+ def setUp(self):
+ self._original_check_interval = sys.getcheckinterval()
+ sys.setcheckinterval(1)
+
+ def tearDown(self):
+ sys.setcheckinterval(self._original_check_interval)
+
+ def testGetRolesWithMultiThread(self):
+ from AccessControl.ZopeSecurityPolicy import getRoles
+
+ class C(object):
+ pass
+
+ class V1(object):
+ class __roles__(object):
+ @staticmethod
+ def rolesForPermissionOn(ob):
+ return ['Member']
+
+ class V2(object):
+ class __roles__(object):
+ @staticmethod
+ def rolesForPermissionOn(ob):
+ return ['User']
+
+ c = C()
+ c.v1 = V1()
+ c.v2 = V2()
+
+ self.assertEqual(getRoles(c, None, c.v1, 42), ['Member'])
+ self.assertEqual(getRoles(c, None, c.v2, 42), ['User'])
+ mark = []
+
+ def loop():
+ while 1:
+ getRoles(c, None, c.v2, 42)
+ if len(mark) > 0:
+ return
+ thread.start_new_thread(loop, ())
+ try:
+ for i in range(1000):
+ self.assertEqual(getRoles(c, None, c.v1, 42), ['Member'])
+ finally:
+ mark.append(None)
+
+
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(Python_ZSPTests, 'test'))
suite.addTest(unittest.makeSuite(C_ZSPTests, 'test'))
suite.addTest(DocTestSuite())
+ suite.addTest(unittest.makeSuite(GetRolesWithMultiThreadTest))
return suite
More information about the checkins
mailing list