[Checkins] SVN: zope.app.wsgi/trunk/ - Fixed: zope.app.wsgi.paste.ZopeApplication didn't emit
Jim Fulton
jim at zope.com
Thu Jan 19 15:03:08 UTC 2012
Log message for revision 124089:
- Fixed: zope.app.wsgi.paste.ZopeApplication didn't emit
ProcessStarting events.
Changed:
U zope.app.wsgi/trunk/CHANGES.txt
U zope.app.wsgi/trunk/setup.py
U zope.app.wsgi/trunk/src/zope/app/wsgi/paste.py
U zope.app.wsgi/trunk/src/zope/app/wsgi/tests.py
-=-
Modified: zope.app.wsgi/trunk/CHANGES.txt
===================================================================
--- zope.app.wsgi/trunk/CHANGES.txt 2012-01-19 13:04:19 UTC (rev 124088)
+++ zope.app.wsgi/trunk/CHANGES.txt 2012-01-19 15:03:08 UTC (rev 124089)
@@ -2,11 +2,17 @@
CHANGES
=======
-3.14.1 (unreleased)
+3.15.0 (2012-01-19)
-------------------
-- Nothing to release yet.
+- Fixed: zope.app.wsgi.paste.ZopeApplication didn't emit
+ ProcessStarting events.
+ **NOTE**
+ If an application compensated for this by generating the event, it
+ will need to stop or there will be multiple events
+ emited. (Whether or not multiple events will do any harm is
+ application specific.)
3.14.0 (2012-01-10)
-------------------
Modified: zope.app.wsgi/trunk/setup.py
===================================================================
--- zope.app.wsgi/trunk/setup.py 2012-01-19 13:04:19 UTC (rev 124088)
+++ zope.app.wsgi/trunk/setup.py 2012-01-19 15:03:08 UTC (rev 124089)
@@ -68,7 +68,16 @@
'zope.publisher',
'zope.security',
'zope.component',
+ 'zope.configuration',
+ 'zope.container',
+ 'zope.error',
+ 'zope.lifecycleevent',
+ 'zope.processlifetime',
+ 'zope.session',
+ 'zope.site',
'zope.testbrowser[wsgi] >= 4.0.0',
+ 'zope.testing',
+ 'zope.traversing',
],
entry_points={
'paste.app_factory': [
Modified: zope.app.wsgi/trunk/src/zope/app/wsgi/paste.py
===================================================================
--- zope.app.wsgi/trunk/src/zope/app/wsgi/paste.py 2012-01-19 13:04:19 UTC (rev 124088)
+++ zope.app.wsgi/trunk/src/zope/app/wsgi/paste.py 2012-01-19 15:03:08 UTC (rev 124089)
@@ -16,6 +16,8 @@
$Id$
"""
from zope.app.wsgi import getWSGIApplication
+import zope.event
+import zope.processlifetime
def asbool(obj):
@@ -30,4 +32,6 @@
def ZopeApplication(global_config, config_file, handle_errors=True, **options):
handle_errors = asbool(handle_errors)
- return getWSGIApplication(config_file, handle_errors=handle_errors)
+ app = getWSGIApplication(config_file, handle_errors=handle_errors)
+ zope.event.notify(zope.processlifetime.ProcessStarting())
+ return app
Modified: zope.app.wsgi/trunk/src/zope/app/wsgi/tests.py
===================================================================
--- zope.app.wsgi/trunk/src/zope/app/wsgi/tests.py 2012-01-19 13:04:19 UTC (rev 124088)
+++ zope.app.wsgi/trunk/src/zope/app/wsgi/tests.py 2012-01-19 15:03:08 UTC (rev 124089)
@@ -26,7 +26,43 @@
def cleanEvents(s):
zope.event.subscribers.pop()
+def creating_app_w_paste_emits_ProcessStarting_event():
+ """
+ >>> import zope.event
+ >>> events = []
+ >>> subscriber = events.append
+ >>> zope.event.subscribers.append(subscriber)
+ >>> import os, tempfile
+ >>> temp_dir = tempfile.mkdtemp()
+ >>> sitezcml = os.path.join(temp_dir, 'site.zcml')
+ >>> open(sitezcml, 'w').write('<configure />')
+ >>> zopeconf = os.path.join(temp_dir, 'zope.conf')
+ >>> open(zopeconf, 'w').write('''
+ ... site-definition %s
+ ...
+ ... <zodb>
+ ... <mappingstorage />
+ ... </zodb>
+ ...
+ ... <eventlog>
+ ... <logfile>
+ ... path STDOUT
+ ... </logfile>
+ ... </eventlog>
+ ... ''' % sitezcml)
+
+ >>> import zope.app.wsgi.paste, zope.processlifetime
+ >>> app = zope.app.wsgi.paste.ZopeApplication(
+ ... {}, zopeconf, handle_errors=False)
+
+ >>> len([e for e in events
+ ... if isinstance(e, zope.processlifetime.ProcessStarting)]) == 1
+ True
+
+ >>> zope.event.subscribers.remove(subscriber)
+ """
+
def test_suite():
checker = renormalizing.RENormalizing([
@@ -36,6 +72,8 @@
])
filereturns_suite = doctest.DocFileSuite('filereturns.txt')
filereturns_suite.layer = BrowserLayer(zope.app.wsgi)
+ dt_suite = doctest.DocTestSuite()
+ dt_suite.layer = BrowserLayer(zope.app.wsgi)
readme_test = doctest.DocFileSuite(
'README.txt',
@@ -56,4 +94,6 @@
testlayer_suite.layer = SillyMiddleWareBrowserLayer(zope.app.wsgi)
return unittest.TestSuite((
- filereturns_suite, readme_test, doctest_suite, testlayer_suite))
+ filereturns_suite, readme_test, doctest_suite, testlayer_suite,
+ dt_suite,
+ ))
More information about the checkins
mailing list