[Zope-dev] ZopeTestCase.doctest is not aware of local sites
Hanno Schlichting
plone at hannosch.info
Tue Mar 6 11:54:33 EST 2007
Hi all,
while pushing local site support in CMF/Plone I came across some weird
test failures. After a while of debbuging I could track this down to the
http method in ZopeTestCase's doctest support.
The method in its Zope2 incarnation is not aware of local sites, while
the one in zope.app.testing is.
I have attached a patch that mirrors the Zope3 behavior and saves the
site information before publishing a module and restores it back, just
like the security manager is saved/restored.
As this is causing some test failures in Plone 3 now, I would be happy
if somebody could take a look at this.
Thank you,
Hanno
-------------- next part --------------
Index: /opt/plone30/parts/zope2/lib/python/Testing/ZopeTestCase/zopedoctest/functional.py
===================================================================
--- /opt/plone30/parts/zope2/lib/python/Testing/ZopeTestCase/zopedoctest/functional.py (revision 72995)
+++ /opt/plone30/parts/zope2/lib/python/Testing/ZopeTestCase/zopedoctest/functional.py (working copy)
@@ -117,6 +117,7 @@
"""
import urllib
import rfc822
+ from zope.app.component.hooks import setSite, getSite
from cStringIO import StringIO
from ZPublisher.Response import Response
from ZPublisher.Test import publish_module
@@ -126,6 +127,10 @@
# Save current Security Manager
old_sm = getSecurityManager()
+ # And we need to store the old site
+ old_site = getSite()
+ setSite(None)
+
# Commit work done by previous python code.
transaction.commit()
@@ -193,6 +198,9 @@
# by calling the publish method above
setSecurityManager(old_sm)
+ # And we need to restore the site again
+ setSite(old_site)
+
# Sync connection
sync()
More information about the Zope-Dev
mailing list