Lennart Regebro wrote:
> On the actual problem, this is a big red flag for me:
>   'isinstance(zapi.getSiteManager(), FiveSiteManager)': True,
> Fails. So, it's not a FivesiteManager. What is it? None, or something else?

It's the global site manager if not the FiveSiteManager.

> Since this seems to be a cleanup issue, my guess is: Something else.
> Probably another one of the site tests doesn't clean up (and that's
> probably my fault).

Nope, it's really nobody's fault but mine. And the site tests weren't 
responsible for
sure. So, before I explain this issue in detail, let me say: I've already fixed 
this in
the Five repo after remembering a peculiarity in Zope 3.1+ last night. I just 
haven't had
the time yet to merge it to the Zope repo, will do that first thing I'm back in 
check-in range (on the road right now).

So, here's the deal:
zope.component doesn't have a clue about local sites. All it knows is the 
global site
manager. However, it *does* provide a hook so that other software can influence 
where the
site manager is found. zope.app.component (notice the app here) provides such a 
hook that
knows about the site in the thread local. That's how zope.component in the end 
find local sites, because it calls the hook.

Now, in Zope X3 3.0, the hooks were set via ZCML using the <hook /> directive. 
directive was ripped out in Zope 3.1 and replaced by a simple function,
zope.app.component.hooks.setHooks(). This function is called upon Zope startup 
zope.app.appsetup.appsetup.config() so that the hooks are set when Zope is 
running. A
clean-up function is registered with the general test clean-up facility in Zope 
3 that
clears the hook. So, a unit test would normally not see the hooks *if* it is 
run *after*
a test that has used e.g. placelesssetup.tearDown().

So, in the end, it was actually a problem of cleaning up too much, not too 
little. I've
already had to deal with this problem in the utility tests and solved it there, 
didn't remember it when I initially wrote the functional test. That's why my 
efforts were futile back then.

I guess this needs to be handled a better way, but I leave it to Stephan (who I 
think is
responsible for the hooks handling) to decide what to do.


This message was sent using IMP, the Internet Messaging Program.
Zope-Dev maillist  -  Zope-Dev@zope.org
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope )

Reply via email to