summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJason Madden <jamadden@gmail.com>2013-03-04 08:33:43 -0600
committerJason Madden <jamadden@gmail.com>2013-03-04 08:33:43 -0600
commit17922c1981ccab2faeea88ac430b64890f6dd3f7 (patch)
tree3c479b4540f47120909d58bbc4c4433e93f10fd1 /src
parent744faf96af436521388341fcafc95270ecdb51ed (diff)
downloadzope-component-17922c1981ccab2faeea88ac430b64890f6dd3f7.tar.gz
Reset the cached adapter_hooks at zope.testing.cleanup.cleanUp time (LP1100501).
Diffstat (limited to 'src')
-rw-r--r--src/zope/component/hooks.py6
-rw-r--r--src/zope/component/tests/test_hooks.py10
2 files changed, 15 insertions, 1 deletions
diff --git a/src/zope/component/hooks.py b/src/zope/component/hooks.py
index 32bb641..5f588c1 100644
--- a/src/zope/component/hooks.py
+++ b/src/zope/component/hooks.py
@@ -131,6 +131,12 @@ def resetHooks():
from zope.component import _api
_api.adapter_hook.reset()
_api.getSiteManager.reset()
+ # be sure the old adapter hook isn't cached, since
+ # it is derived from the SiteManager
+ try:
+ del siteinfo.adapter_hook
+ except AttributeError:
+ pass
# Clear the site thread global
clearSite = setSite
diff --git a/src/zope/component/tests/test_hooks.py b/src/zope/component/tests/test_hooks.py
index b52b1c7..54699da 100644
--- a/src/zope/component/tests/test_hooks.py
+++ b/src/zope/component/tests/test_hooks.py
@@ -293,6 +293,7 @@ class Test_resetHooks(unittest.TestCase):
def test_it(self):
import zope.component._api
+ from zope.component import hooks
class _Hook(object):
def __init__(self):
self._reset = False
@@ -303,9 +304,17 @@ class Test_resetHooks(unittest.TestCase):
with _Monkey(zope.component._api,
adapter_hook=adapter_hook,
getSiteManager=getSiteManager):
+ # Access the adapter_hook of the site info to be
+ # sure it caches
+ getattr(hooks.siteinfo, 'adapter_hook')
+ self.assertTrue('adapter_hook' in hooks.siteinfo.__dict__)
+
self._callFUT()
+
self.assertTrue(adapter_hook._reset)
self.assertTrue(getSiteManager._reset)
+ # adapter_hook cache also reset
+ self.assertFalse('adapter_hook' in hooks.siteinfo.__dict__)
_SM = object()
@@ -341,4 +350,3 @@ def test_suite():
unittest.makeSuite(Test_setHooks),
unittest.makeSuite(Test_resetHooks),
))
-