[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