[Repoze-checkins] r1134 - in repoze.zope2/trunk: . repoze/zope2 repoze/zope2/tests
Chris McDonough
chrism at agendaless.com
Wed Jun 25 19:08:18 EDT 2008
Author: Chris McDonough <chrism at agendaless.com>
Date: Wed Jun 25 19:08:17 2008
New Revision: 1134
Log:
- Add a configuration flag for the app:zope2 section: 'disable_gc'.
If this flag exists and is true, disable Python garbage collection
for the interpreter used to start the process. This flag probably
doesn't belong here.
- More explictly call noSecurityManager and clear out instance
variables in the bob helper's .teardown method in case a helper
ever leaks.
- Belatedly change Trove classifier to "Development Status :: 4 - Beta"
(it was "Development Status :: 1 - Planning").
Modified:
repoze.zope2/trunk/CHANGES.txt
repoze.zope2/trunk/repoze/zope2/tests/test_z2bob.py
repoze.zope2/trunk/repoze/zope2/z2bob.py
repoze.zope2/trunk/setup.py
Modified: repoze.zope2/trunk/CHANGES.txt
==============================================================================
--- repoze.zope2/trunk/CHANGES.txt (original)
+++ repoze.zope2/trunk/CHANGES.txt Wed Jun 25 19:08:17 2008
@@ -1,4 +1,18 @@
-Next release
+0.4.4 (2008-06-25)
+
+ - Add a configuration flag for the app:zope2 section: 'disable_gc'.
+ If this flag exists and is true, disable Python garbage collection
+ for the interpreter used to start the process. This flag probably
+ doesn't belong here.
+
+ - More explictly call noSecurityManager and clear out instance
+ variables in the bob helper's .teardown method in case a helper
+ ever leaks.
+
+ - Belatedly change Trove classifier to "Development Status :: 4 - Beta"
+ (it was "Development Status :: 1 - Planning").
+
+0.4.3 (2008-06-18)
- Dont attempt any retries on conflict errors at startup.
This was never tested, and probably didn't work.
Modified: repoze.zope2/trunk/repoze/zope2/tests/test_z2bob.py
==============================================================================
--- repoze.zope2/trunk/repoze/zope2/tests/test_z2bob.py (original)
+++ repoze.zope2/trunk/repoze/zope2/tests/test_z2bob.py Wed Jun 25 19:08:17 2008
@@ -31,6 +31,7 @@
from repoze.zope2.tests.base import DummyPublishedObjectWithCallRoles
from repoze.zope2.tests.base import DummyPermissiveUserFolder
from repoze.zope2.tests.base import DummyNoPermissionsUserFolder
+from repoze.zope2.tests.base import DummyUser
from repoze.zope2.tests.base import _BETTER_THAN_210
class TestTopLevelFuncs(unittest.TestCase):
@@ -130,6 +131,25 @@
self.assertEqual(helper.appname, 'Application')
self.assertEqual(helper.browser_default_redirects, False)
+ def test_ctor_nondefaults(self):
+ environ = {}
+ import gc
+ if gc.isenabled():
+ reenable = True
+ else:
+ reenable = False
+ try:
+ helper = self._makeOne(environ, appname='Application2',
+ browser_default_redirects='true',
+ disable_gc='true')
+ self.assertEqual(helper.appname, 'Application2')
+ self.assertEqual(helper.browser_default_redirects, True)
+ self.assertEqual(gc.isenabled(), False)
+ finally:
+ if reenable:
+ gc.enable()
+
+
def test_setup(self):
from zope.security.management import queryInteraction
from zope.security.management import endInteraction
@@ -239,14 +259,24 @@
from zope.security.management import queryInteraction
from zope.security.management import newInteraction
from zope.security.management import endInteraction
+ from AccessControl.SecurityManagement import newSecurityManager
+ from AccessControl.SecurityManagement import _managers
helper = self._makeOne()
if queryInteraction() is not None:
endInteraction()
newInteraction()
interaction = queryInteraction()
+ newSecurityManager(None, DummyUser())
+ request = helper.request
helper.teardown()
self.assertEqual(queryInteraction(), None)
- self.assertEqual(helper.request.closed, True)
+ self.assertEqual(request.closed, True)
+ self.assertEqual(_managers,{}) # noSecurityManager called
+ self.assertEqual(helper.request, None)
+ self.assertEqual(helper.user_folders, None)
+ self.assertEqual(helper.vroot_stack, None)
+ self.assertEqual(helper.root, None)
+ self.assertEqual(helper.browser_default_published, None)
def test_next_name(self):
helper = self._makeOne()
Modified: repoze.zope2/trunk/repoze/zope2/z2bob.py
==============================================================================
--- repoze.zope2/trunk/repoze/zope2/z2bob.py (original)
+++ repoze.zope2/trunk/repoze/zope2/z2bob.py Wed Jun 25 19:08:17 2008
@@ -156,6 +156,10 @@
self.appname = config.get('appname', 'Application')
self.browser_default_redirects = asbool(config.get(
'browser_default_redirects', False))
+ # XXX hack for disable_gc: should be at higher level
+ if asbool(config.get('disable_gc', False)):
+ import gc
+ gc.disable()
def __del__(self):
if tm and not tm.isActive(self.environ):
@@ -221,6 +225,16 @@
if self.request is not None:
# if there was not an error during setup()
self.request.close()
+ # be explicit about clearing out references; if we hang around
+ # for some reason, we don't want our subitems hanging around.
+ self.request = None
+ self.user_folders = None
+ self.vroot_stack = None
+ self.request = None
+ self.root = None
+ self.browser_default_published = None
+ # can't get rid of environ or conn as they're used in __del__
+ noSecurityManager()
def next_name(self):
trns = self.request['TraversalRequestNameStack']
Modified: repoze.zope2/trunk/setup.py
==============================================================================
--- repoze.zope2/trunk/setup.py (original)
+++ repoze.zope2/trunk/setup.py Wed Jun 25 19:08:17 2008
@@ -12,7 +12,7 @@
#
##############################################################################
-__version__ = '0.4.3'
+__version__ = '0.4.4'
from ez_setup import use_setuptools
use_setuptools()
@@ -29,7 +29,7 @@
description='Zope2 via WSGI and Paste',
long_description=README + '\n\nCHANGES\n\n' + CHANGES,
classifiers=[
- "Development Status :: 1 - Planning",
+ "Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Programming Language :: Python",
"Topic :: Internet :: WWW/HTTP",
More information about the Repoze-checkins
mailing list