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 
SVN
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 
*does*
find local sites, because it calls the hook.

Now, in Zope X3 3.0, the hooks were set via ZCML using the <hook /> directive. 
This
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 
by
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, 
but
didn't remember it when I initially wrote the functional test. That's why my 
debugging
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.

Philipp


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

Reply via email to