[Checkins] SVN: Sandbox/faassen/zope.site/trunk/ The tests work except for one event-related test, which needs a fix
Martijn Faassen
faassen at infrae.com
Tue Jan 27 10:45:34 EST 2009
Log message for revision 95220:
The tests work except for one event-related test, which needs a fix
in zope.app.container. (and/or a backwards compatibility improvements
in zope.app.component which now should start importing from zope.site).
Changed:
U Sandbox/faassen/zope.site/trunk/buildout.cfg
U Sandbox/faassen/zope.site/trunk/src/zope/site/README.txt
U Sandbox/faassen/zope.site/trunk/src/zope/site/__init__.py
U Sandbox/faassen/zope.site/trunk/src/zope/site/interfaces.py
U Sandbox/faassen/zope.site/trunk/src/zope/site/site.py
U Sandbox/faassen/zope.site/trunk/src/zope/site/site.txt
U Sandbox/faassen/zope.site/trunk/src/zope/site/testing.py
U Sandbox/faassen/zope.site/trunk/src/zope/site/tests/adapter.py
U Sandbox/faassen/zope.site/trunk/src/zope/site/tests/test_api.py
U Sandbox/faassen/zope.site/trunk/src/zope/site/tests/test_localsitemanager.py
U Sandbox/faassen/zope.site/trunk/src/zope/site/tests/test_registration.py
U Sandbox/faassen/zope.site/trunk/src/zope/site/tests/test_site.py
-=-
Modified: Sandbox/faassen/zope.site/trunk/buildout.cfg
===================================================================
--- Sandbox/faassen/zope.site/trunk/buildout.cfg 2009-01-27 15:19:06 UTC (rev 95219)
+++ Sandbox/faassen/zope.site/trunk/buildout.cfg 2009-01-27 15:45:34 UTC (rev 95220)
@@ -1,5 +1,5 @@
[buildout]
-develop = .
+develop = . zope.app.component
parts = test coverage-test coverage-report
[test]
Modified: Sandbox/faassen/zope.site/trunk/src/zope/site/README.txt
===================================================================
--- Sandbox/faassen/zope.site/trunk/src/zope/site/README.txt 2009-01-27 15:19:06 UTC (rev 95219)
+++ Sandbox/faassen/zope.site/trunk/src/zope/site/README.txt 2009-01-27 15:45:34 UTC (rev 95220)
@@ -17,8 +17,7 @@
It is common for a utility to delegate its answer to a utility
providing the same interface in one of the component registry's
-bases. Let's start by creating a utility and inserting it in our
-folder hiearchy:
+bases. Let's first create a global utility::
>>> import zope.interface
>>> class IMyUtility(zope.interface.Interface):
@@ -29,20 +28,37 @@
... def __init__(self, id):
... self.id = id
... def __repr__(self):
- ... return "%s('%s')" %(self.__class__.__name__, self.id)
+ ... return "%s('%s')" % (self.__class__.__name__, self.id)
>>> gutil = MyUtility('global')
+ >>> from zope.component import getGlobalSiteManager
+ >>> gsm = getGlobalSiteManager()
>>> gsm.registerUtility(gutil, IMyUtility, 'myutil')
- >>> util1 = setup.addUtility(folder1_sm, 'myutil', IMyUtility,
- ... MyUtility('one'))
+We create a simple folder hierarchy we can place our utilities in:
- >>> folder1_1_sm = setup.createSiteManager(root['folder1']['folder1_1'])
- >>> util1_1 = setup.addUtility(folder1_1_sm, 'myutil', IMyUtility,
- ... MyUtility('one-one'))
+ >>> from zope.app.folder import Folder, rootFolder
+ >>> root = rootFolder()
+ >>> root[u'folder1'] = Folder()
+ >>> root[u'folder1'][u'folder1_1'] = Folder()
-Now, if we ask `util1_1` for its next available utility and we get
+We set up site managers in the folders::
+ >>> from zope.site import testing
+ >>> root_sm = testing.createSiteManager(root)
+ >>> folder1_sm = testing.createSiteManager(root['folder1'])
+ >>> folder1_1_sm = testing.createSiteManager(root['folder1']['folder1_1'])
+
+Now we create two utilities and insert them in our folder hierarchy:
+
+ >>> util1 = testing.addUtility(folder1_sm, 'myutil', IMyUtility,
+ ... MyUtility('one'))
+ >>> util1_1 = testing.addUtility(folder1_1_sm, 'myutil', IMyUtility,
+ ... MyUtility('one-one'))
+
+Now, if we ask `util1_1` for its next available utility we get the
+``one`` utility::
+
>>> from zope import site
>>> site.getNextUtility(util1_1, IMyUtility, 'myutil')
MyUtility('one')
@@ -62,7 +78,7 @@
No more utilities for <InterfaceClass __builtin__.IMyUtility>,
'myutil' have been found.
-or you can simply use the `queryNextUtility` and specify a default:
+You can also use `queryNextUtility` and specify a default:
>>> site.queryNextUtility(gutil, IMyUtility, 'myutil', 'default')
'default'
@@ -73,14 +89,16 @@
>>> from zope.component import registry
>>> myregistry = registry.Components()
+We now set up another utility into that registry:
+
>>> custom_util = MyUtility('my_custom_util')
>>> myregistry.registerUtility(custom_util, IMyUtility, 'my_custom_util')
-Now we add it as a base to the local site manager:
+We add it as a base to the local site manager:
>>> folder1_sm.__bases__ = (myregistry,) + folder1_sm.__bases__
-Both, the ``myregistry`` and global utilities should be available:
+Both the ``myregistry`` and global utilities should be available:
>>> site.queryNextUtility(folder1_sm, IMyUtility, 'my_custom_util')
MyUtility('my_custom_util')
Modified: Sandbox/faassen/zope.site/trunk/src/zope/site/__init__.py
===================================================================
--- Sandbox/faassen/zope.site/trunk/src/zope/site/__init__.py 2009-01-27 15:19:06 UTC (rev 95219)
+++ Sandbox/faassen/zope.site/trunk/src/zope/site/__init__.py 2009-01-27 15:45:34 UTC (rev 95220)
@@ -16,7 +16,8 @@
$Id$
"""
-from zope.site.site import SiteManagerContainer, SiteManagementFolder
+from zope.site.site import (SiteManagerContainer, SiteManagementFolder,
+ SiteManagerAdapter)
from zope.site.site import LocalSiteManager, changeSiteConfigurationAfterMove
from zope.site.site import threadSiteSubscriber
from zope.site.site import clearThreadSiteSubscriber
Modified: Sandbox/faassen/zope.site/trunk/src/zope/site/interfaces.py
===================================================================
--- Sandbox/faassen/zope.site/trunk/src/zope/site/interfaces.py 2009-01-27 15:19:06 UTC (rev 95219)
+++ Sandbox/faassen/zope.site/trunk/src/zope/site/interfaces.py 2009-01-27 15:45:34 UTC (rev 95220)
@@ -20,11 +20,6 @@
import zope.interface
import zope.component.interfaces
import zope.app.container.interfaces
-
-zope.deferredimport.deprecatedFrom(
- "Moved to zope.location.interfaces. Importing from here will stop working in Zope 3.6",
- "zope.location.interfaces",
- "ISite", "IPossibleSite")
class INewLocalSite(zope.interface.Interface):
"""Event: a local site was created
@@ -32,7 +27,7 @@
manager = zope.interface.Attribute("The new site manager")
-class NewLocalSite:
+class NewLocalSite(object):
"""Event: a local site was created
"""
zope.interface.implements(INewLocalSite)
Modified: Sandbox/faassen/zope.site/trunk/src/zope/site/site.py
===================================================================
--- Sandbox/faassen/zope.site/trunk/src/zope/site/site.py 2009-01-27 15:19:06 UTC (rev 95219)
+++ Sandbox/faassen/zope.site/trunk/src/zope/site/site.py 2009-01-27 15:45:34 UTC (rev 95220)
@@ -112,7 +112,6 @@
zope.interface.directlyProvides(
self, zope.location.interfaces.ISite,
zope.interface.directlyProvidedBy(self))
-
zope.event.notify(interfaces.NewLocalSite(sm))
def _findNextSiteManager(site):
Modified: Sandbox/faassen/zope.site/trunk/src/zope/site/site.txt
===================================================================
--- Sandbox/faassen/zope.site/trunk/src/zope/site/site.txt 2009-01-27 15:19:06 UTC (rev 95219)
+++ Sandbox/faassen/zope.site/trunk/src/zope/site/site.txt 2009-01-27 15:45:34 UTC (rev 95220)
@@ -2,14 +2,13 @@
Sites and Local Site Managers
=============================
-This chapter is an introduction of the location-based component
-architecture.
+This is an introduction of location-based component architecture.
Creating and Accessing Sites
----------------------------
*Sites* are used to provide custom component setups for parts of your
-application or Web site. Every folder:
+application or web site. Every folder:
>>> from zope.app.folder import folder
>>> myfolder = folder.rootFolder()
@@ -50,7 +49,7 @@
Note that an event is generated when a local site manager is created:
>>> from zope.component.eventtesting import getEvents
- >>> from zope.app.component.interfaces import INewLocalSite
+ >>> from zope.site.interfaces import INewLocalSite
>>> [event] = getEvents(INewLocalSite)
>>> event.manager is sm
True
@@ -63,8 +62,8 @@
...
ValueError: setSiteManager requires an IComponentLookup
-Also, if the possible site has been changed to a site already, a `TypeError`
-is raised, when one attempts to add a new site manager:
+If the possible site has been changed to a site already, a `TypeError`
+is raised when one attempts to add a new site manager:
>>> myfolder.setSiteManager(site.LocalSiteManager(myfolder))
Traceback (most recent call last):
@@ -93,7 +92,7 @@
the nearest site is also recorded in a thread-global variable:
- >>> from zope.app.component import hooks
+ >>> from zope.site import hooks
>>> hooks.getSite() is myfolder
True
@@ -124,7 +123,7 @@
<class 'zope.site.site.SiteManagementFolder'>
Once you have your site management folder -- let's use the default one -- we
-can register some components. Let's start with a utility
+can register some components. Let's start with a utility:
>>> import zope.interface
>>> class IMyUtility(zope.interface.Interface):
@@ -321,10 +320,10 @@
# Make sure that our interfaces and classes are picklable.
>>> import sys
- >>> sys.modules['zope.app.component.tests'].IMyUtility = IMyUtility
- >>> IMyUtility.__module__ = 'zope.app.component.tests'
- >>> sys.modules['zope.app.component.tests'].MyUtility = MyUtility
- >>> MyUtility.__module__ = 'zope.app.component.tests'
+ >>> sys.modules['zope.site.tests'].IMyUtility = IMyUtility
+ >>> IMyUtility.__module__ = 'zope.site.tests'
+ >>> sys.modules['zope.site.tests'].MyUtility = MyUtility
+ >>> MyUtility.__module__ = 'zope.site.tests'
>>> from zope.location.pickling import locationCopy
>>> myfolder['myfolder11'] = locationCopy(myfolder2['myfolder21'])
Modified: Sandbox/faassen/zope.site/trunk/src/zope/site/testing.py
===================================================================
--- Sandbox/faassen/zope.site/trunk/src/zope/site/testing.py 2009-01-27 15:19:06 UTC (rev 95219)
+++ Sandbox/faassen/zope.site/trunk/src/zope/site/testing.py 2009-01-27 15:45:34 UTC (rev 95220)
@@ -11,186 +11,53 @@
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
-"""Base Mix-in class for Placeful Setups
-
-Also contains common test related classes/functions/objects.
-
-$Id$
+"""Reusable functionality for testing site-related code
"""
-import os
-import zope.interface
+import zope.component
from zope.component.interfaces import IComponentLookup
-from zope.app.component.interfaces import ILocalSiteManager
-from zope.app.testing import setup
-from zope.app.testing.placelesssetup import PlacelessSetup
-from zope.app.folder import rootFolder
-from zope.app.testing.functional import ZCMLLayer
-from zope.traversing.api import traverse
+from zope.interface import Interface
-AppComponentLayer = ZCMLLayer(
- os.path.join(os.path.split(__file__)[0], 'ftesting.zcml'),
- __name__, 'AppComponentLayer', allow_teardown=True)
+from zope.site import LocalSiteManager, SiteManagerAdapter
+from zope.location.interfaces import ISite
+from zope.site.hooks import setSite
+import zope.site.hooks
-class Place(object):
+from zope.app.testing.placelesssetup import setUp as placelessSetUp
+from zope.app.testing.placelesssetup import tearDown as placelessTearDown
- def __init__(self, path):
- self.path = path
+def createSiteManager(folder, setsite=False):
+ if not ISite.providedBy(folder):
+ folder.setSiteManager(LocalSiteManager(folder))
+ if setsite:
+ setSite(folder)
+ return folder.getSiteManager()
- def __get__(self, inst, cls=None):
- if inst is None:
- return self
+def addUtility(sitemanager, name, iface, utility, suffix=''):
+ """Add a utility to a site manager
- try:
- # Use __dict__ directly to avoid infinite recursion
- root = inst.__dict__['rootFolder']
- except KeyError:
- root = inst.rootFolder = setup.buildSampleFolderTree()
+ This helper function is useful for tests that need to set up utilities.
+ """
+ folder_name = (name or (iface.__name__ + 'Utility')) + suffix
+ default = sitemanager['default']
+ default[folder_name] = utility
+ utility = default[folder_name]
+ sitemanager.registerUtility(utility, iface, name)
+ return utility
- return traverse(root, self.path)
+def siteSetUp(site=False):
+ placelessSetUp()
+ zope.site.hooks.setHooks()
+ zope.component.provideAdapter(SiteManagerAdapter, (Interface,),
+ IComponentLookup)
-class PlacefulSetup(PlacelessSetup):
+ if site:
+ site = rootFolder()
+ createSiteManager(site, setsite=True)
+ return site
- # Places :)
- rootFolder = Place(u'')
-
- folder1 = Place(u'folder1')
- folder1_1 = Place(u'folder1/folder1_1')
- folder1_1_1 = Place(u'folder1/folder1_1/folder1_1_1')
- folder1_1_2 = Place(u'folder1/folder1_2/folder1_1_2')
- folder1_2 = Place(u'folder1/folder1_2')
- folder1_2_1 = Place(u'folder1/folder1_2/folder1_2_1')
-
- folder2 = Place(u'folder2')
- folder2_1 = Place(u'folder2/folder2_1')
- folder2_1_1 = Place(u'folder2/folder2_1/folder2_1_1')
-
- folder3 = Place(u"\N{CYRILLIC SMALL LETTER PE}"
- u"\N{CYRILLIC SMALL LETTER A}"
- u"\N{CYRILLIC SMALL LETTER PE}"
- u"\N{CYRILLIC SMALL LETTER KA}"
- u"\N{CYRILLIC SMALL LETTER A}3")
- folder3_1 = Place(u"\N{CYRILLIC SMALL LETTER PE}"
- u"\N{CYRILLIC SMALL LETTER A}"
- u"\N{CYRILLIC SMALL LETTER PE}"
- u"\N{CYRILLIC SMALL LETTER KA}"
- u"\N{CYRILLIC SMALL LETTER A}3/"
- u"\N{CYRILLIC SMALL LETTER PE}"
- u"\N{CYRILLIC SMALL LETTER A}"
- u"\N{CYRILLIC SMALL LETTER PE}"
- u"\N{CYRILLIC SMALL LETTER KA}"
- u"\N{CYRILLIC SMALL LETTER A}3_1")
-
- def setUp(self, folders=False, site=False):
- setup.placefulSetUp()
- if folders or site:
- return self.buildFolders(site)
-
- def tearDown(self):
- setup.placefulTearDown()
- # clean up folders and placeful site managers and services too?
-
- def buildFolders(self, site=False):
- self.rootFolder = setup.buildSampleFolderTree()
- if site:
- return self.makeSite()
-
- def makeSite(self, path='/'):
- folder = traverse(self.rootFolder, path)
- return setup.createSiteManager(folder, True)
-
- def createRootFolder(self):
- self.rootFolder = rootFolder()
-
-
-class SiteManagerStub(object):
- zope.interface.implements(ILocalSiteManager)
-
- __bases__ = ()
-
- def __init__(self):
- self._utils = {}
-
- def setNext(self, next):
- self.__bases__ = (next, )
-
- def provideUtility(self, iface, util, name=''):
- self._utils[(iface, name)] = util
-
- def queryUtility(self, iface, name='', default=None):
- return self._utils.get((iface, name), default)
-
-
-def testingNextUtility(utility, nextutility, interface, name='',
- sitemanager=None, nextsitemanager=None):
- """Provide a next utility for testing.
-
- Since utilities must be registered in sites, we really provide a next
- site manager in which we place the next utility. If you do not pass in
- any site managers, they will be created for you.
-
- For a simple usage of this function, see the doc test of
- `queryNextUtility()`. Here is a demonstration that passes in the services
- directly and ensures that the `__parent__` attributes are set correctly.
-
- First, we need to create a utility interface and implementation:
-
- >>> from zope.interface import Interface, implements
- >>> class IAnyUtility(Interface):
- ... pass
-
- >>> class AnyUtility(object):
- ... implements(IAnyUtility)
- ... def __init__(self, id):
- ... self.id = id
-
- >>> any1 = AnyUtility(1)
- >>> any1next = AnyUtility(2)
-
- Now we create a special site manager that can have a location:
-
- >>> SiteManager = type('SiteManager', (GlobalSiteManager,),
- ... {'__parent__': None})
-
- Let's now create one site manager
-
- >>> sm = SiteManager()
-
- and pass it in as the original site manager to the function:
-
- >>> testingNextUtility(any1, any1next, IAnyUtility, sitemanager=sm)
- >>> any1.__parent__ is utils
- True
- >>> smnext = any1next.__parent__
- >>> sm.__parent__.next.data['Utilities'] is smnext
- True
-
- or if we pass the current and the next site manager:
-
- >>> sm = SiteManager()
- >>> smnext = SiteManager()
- >>> testingNextUtility(any1, any1next, IAnyUtility,
- ... sitemanager=sm, nextsitemanager=smnext)
- >>> any1.__parent__ is sm
- True
- >>> any1next.__parent__ is smnext
- True
-
- """
- if sitemanager is None:
- sitemanager = SiteManagerStub()
- if nextsitemanager is None:
- nextsitemanager = SiteManagerStub()
- sitemanager.setNext(nextsitemanager)
-
- sitemanager.provideUtility(interface, utility, name)
- utility.__conform__ = (
- lambda iface:
- iface.isOrExtends(IComponentLookup) and sitemanager or None
- )
- nextsitemanager.provideUtility(interface, nextutility, name)
- nextutility.__conform__ = (
- lambda iface:
- iface.isOrExtends(IComponentLookup) and nextsitemanager or None
- )
+def siteTearDown():
+ placelessTearDown()
+ zope.site.hooks.resetHooks()
+ zope.site.hooks.setSite()
Modified: Sandbox/faassen/zope.site/trunk/src/zope/site/tests/adapter.py
===================================================================
--- Sandbox/faassen/zope.site/trunk/src/zope/site/tests/adapter.py 2009-01-27 15:19:06 UTC (rev 95219)
+++ Sandbox/faassen/zope.site/trunk/src/zope/site/tests/adapter.py 2009-01-27 15:45:34 UTC (rev 95220)
@@ -17,7 +17,7 @@
"""
import zope.interface
import zope.component
-import components
+from zope.site.tests import components
class I1(zope.interface.Interface):
pass
Modified: Sandbox/faassen/zope.site/trunk/src/zope/site/tests/test_api.py
===================================================================
--- Sandbox/faassen/zope.site/trunk/src/zope/site/tests/test_api.py 2009-01-27 15:19:06 UTC (rev 95219)
+++ Sandbox/faassen/zope.site/trunk/src/zope/site/tests/test_api.py 2009-01-27 15:45:34 UTC (rev 95220)
@@ -19,20 +19,16 @@
import unittest
from zope.testing import doctest
-from zope.app.testing import setup
+from zope.site import testing
def setUp(test):
- setup.placefulSetUp()
+ testing.siteSetUp()
def tearDown(test):
- setup.placefulTearDown()
+ testing.siteTearDown()
def test_suite():
return unittest.TestSuite((
doctest.DocFileSuite('../README.txt',
setUp=setUp, tearDown=tearDown),
))
-
-if __name__ == "__main__":
- unittest.main(defaultTest='test_suite')
-
Modified: Sandbox/faassen/zope.site/trunk/src/zope/site/tests/test_localsitemanager.py
===================================================================
--- Sandbox/faassen/zope.site/trunk/src/zope/site/tests/test_localsitemanager.py 2009-01-27 15:19:06 UTC (rev 95219)
+++ Sandbox/faassen/zope.site/trunk/src/zope/site/tests/test_localsitemanager.py 2009-01-27 15:45:34 UTC (rev 95220)
@@ -19,11 +19,12 @@
from zope.interface import Interface
from zope.copypastemove import ObjectCopier
-from zope.app.component import site
+from zope import site
from zope.app.folder import Folder
from zope.app.testing.placelesssetup import PlacelessSetup
-class I1(Interface):pass
+class I1(Interface):
+ pass
class TestLocalSiteManager(PlacelessSetup, unittest.TestCase):
@@ -49,6 +50,3 @@
return unittest.TestSuite((
unittest.makeSuite(TestLocalSiteManager),
))
-
-if __name__ == '__main__':
- unittest.main()
Modified: Sandbox/faassen/zope.site/trunk/src/zope/site/tests/test_registration.py
===================================================================
--- Sandbox/faassen/zope.site/trunk/src/zope/site/tests/test_registration.py 2009-01-27 15:19:06 UTC (rev 95219)
+++ Sandbox/faassen/zope.site/trunk/src/zope/site/tests/test_registration.py 2009-01-27 15:45:34 UTC (rev 95220)
@@ -34,7 +34,7 @@
import zope.app.container.contained
from zope import interface
-import zope.app.component.site
+import zope.site
# test class for testing data conversion
@@ -49,11 +49,8 @@
def __repr__(self):
return 'Foo(%r)' % self.name
-def setUpOld(test):
+def setUp(test):
placelesssetup.setUp(test)
- setup.setUpAnnotations()
- setup.setUpDependable()
- setup.setUpTraversal()
test.globs['showwarning'] = warnings.showwarning
warnings.showwarning = lambda *a, **k: None
@@ -61,11 +58,6 @@
warnings.showwarning = test.globs['showwarning']
placelesssetup.tearDown(test)
-def setUp(test):
- placelesssetup.setUp(test)
- test.globs['showwarning'] = warnings.showwarning
- warnings.showwarning = lambda *a, **k: None
-
def oldfs():
return FileStorage(
os.path.join(os.path.dirname(__file__), 'gen3.fs'),
@@ -114,8 +106,8 @@
>>> db = ZODB.tests.util.DB()
>>> tm1 = transaction.TransactionManager()
>>> c1 = db.open(transaction_manager=tm1)
- >>> r1 = zope.app.component.site._LocalAdapterRegistry((base,))
- >>> r2 = zope.app.component.site._LocalAdapterRegistry((r1,))
+ >>> r1 = zope.site.site._LocalAdapterRegistry((base,))
+ >>> r2 = zope.site.site._LocalAdapterRegistry((r1,))
>>> c1.root()[1] = r1
>>> c1.root()[2] = r2
>>> tm1.commit()
@@ -205,7 +197,7 @@
>>> manager.queryAdapter(bar, barmodule.IBaz)
>>> manager.registerAdapter(Baz, [barmodule.IBar], barmodule.IBaz)
>>> manager.getAdapter(bar, barmodule.IBaz) # doctest: +ELLIPSIS
- <zope.app.component.tests.test_registration.Baz object at ...>
+ <zope.site.tests.test_registration.Baz object at ...>
Before commit, the adapter is not available from another connection::
@@ -223,7 +215,7 @@
>>> conn2.sync()
>>> manager2.getAdapter(bar2, barmodule2.IBaz)
... # doctest: +ELLIPSIS
- <zope.app.component.tests.test_registration.Baz object at ...>
+ <zope.site.tests.test_registration.Baz object at ...>
Cleanup::
@@ -239,6 +231,3 @@
))
return suite
-
-if __name__ == "__main__":
- unittest.main(defaultTest='test_suite')
Modified: Sandbox/faassen/zope.site/trunk/src/zope/site/tests/test_site.py
===================================================================
--- Sandbox/faassen/zope.site/trunk/src/zope/site/tests/test_site.py 2009-01-27 15:19:06 UTC (rev 95219)
+++ Sandbox/faassen/zope.site/trunk/src/zope/site/tests/test_site.py 2009-01-27 15:45:34 UTC (rev 95220)
@@ -23,10 +23,12 @@
from zope.testing import doctest
from zope.location.interfaces import ISite, IPossibleSite
-from zope.app.testing import setup
-from zope.app.component import interfaces, site
from zope.app.folder import folder
+from zope.site import interfaces
+from zope import site
+from zope.site import testing
+
class SiteManagerStub(object):
zope.interface.implements(interfaces.ILocalSiteManager)
@@ -51,7 +53,7 @@
then the adapter simply return's the site's site manager:
- >>> from zope.app.component.site import SiteManagerAdapter
+ >>> from zope.site import SiteManagerAdapter
>>> SiteManagerAdapter(site) is sm
True
@@ -84,15 +86,15 @@
This test ensures that the site is corectly set and cleared in a thread
during traversal using event subscribers. Before we start, no site is set:
- >>> from zope.app.component import hooks
+ >>> from zope.site import hooks
>>> hooks.getSite() is None
True
>>> request = object()
- >>> from zope.app import publication
- >>> from zope.app.component import site
+ >>> from zope.app.publication import interfaces
+ >>> from zope import site
On the other hand, if a site is traversed,
@@ -101,7 +103,7 @@
>>> mysite = CustomFolder('mysite')
>>> mysite.setSiteManager(sm)
- >>> ev = publication.interfaces.BeforeTraverseEvent(mysite, request)
+ >>> ev = interfaces.BeforeTraverseEvent(mysite, request)
>>> site.threadSiteSubscriber(mysite, ev)
>>> hooks.getSite()
@@ -109,7 +111,7 @@
Once the request is completed,
- >>> ev = publication.interfaces.EndRequestEvent(mysite, request)
+ >>> ev = interfaces.EndRequestEvent(mysite, request)
>>> site.clearThreadSiteSubscriber(ev)
the site assignment is cleared again:
@@ -145,18 +147,16 @@
self.assertRaises(Exception, smc.setSiteManager, self)
-
class SiteManagerContainerTest(BaseTestSiteManagerContainer):
def makeTestObject(self):
- from zope.app.component.site import SiteManagerContainer
+ from zope.site import SiteManagerContainer
return SiteManagerContainer()
-
def setUp(test):
- setup.placefulSetUp()
-
+ testing.siteSetUp()
+
def tearDown(test):
- setup.placefulTearDown()
+ testing.siteTearDown()
def test_suite():
return unittest.TestSuite((
@@ -165,7 +165,4 @@
doctest.DocFileSuite('../site.txt',
setUp=setUp, tearDown=tearDown),
))
-
-if __name__ == "__main__":
- unittest.main(defaultTest='test_suite')
More information about the Checkins
mailing list