[Zope-dev] zope.component test isolation

Wolfgang Schnerring ws at gocept.com
Mon Apr 4 12:30:04 EDT 2011


Hi,

it seems to me this has stalled somewhat, so I wanted to ask what
people's conclusions are.

* Wolfgang Schnerring <ws at gocept.com> [2011-03-26 13:41]:
> * Martin Aspeli <optilude+lists at gmail.com> [2011-03-26 11:22]:
>> On 26 March 2011 08:11, Wolfgang Schnerring <ws at gocept.com> wrote:
>> I don't think a fixture of "package foo's configuration except
>> component X and Y" is all that useful.

Whether the the "unregister" use case is useful remains debatable, but I
personally don't care all *that* much for it, so if the consensus is
that it's overkill I'll go along I guess.

I do care quite a bit for proper getSiteManager() support...

>> We do definitely need to allow the global site manager to be stacked
>> (which you can achieve with __bases__ as in plone.testing,
>> unregistration notwithstanding). But once you do that, the rest is
>> pretty easy. The local site manager will always have the global as one
>> of its (nested) __bases__.
>
> I'm sorry, but no, it isn't that easy. When the only local site
> consumer is zope.site, well, maybe. But please think of this in terms
> of zope.component *only*.
>
> Its API is getSiteManager.sethook(callable), and AFAICT the contract
> is that the return value of callable must provide IComponents
> (briefly: get* and register*). Nowhere does it say that you have to
> delegate back to the global registry, and neither it should. To bring
> up Pyramid once again, they explicitly don't, because they want to
> allow several applications (thus, several registries) coexisting in
> the same process.
>
> And since we can't assume this delegation, I think there is no other
> way to properly do the stacking than to bend getSiteManager.

... as described here, though. And I wonder if I'm missing something,
because to do that properly looks like quite the can of worms to me.

So, how can we proceed here? Should I (and Thomas) try to get a
proof-of-concept implementation of this based on plone.testing? Or should
we think about what it takes to merge most of plone.testing's ZCA
support into zope.component itself first?

Wolfgang



More information about the Zope-Dev mailing list