Daniel Fagerstrom wrote:

>> So this means roughly 3 same-level directories per block right?
>>
>> For example:
>>
>> 1)org.apache.cocoon.lucene
>> -> mavenized, osgi enabled Real Block or Bundle
>> -> Exported to m2 repo
>>
>> 2)org.apache.cocoon.lucene.samples
>> -> mavenized, non-osgi block with sitemap resources and java sources.
>> -> Explicit pom dependency on 1)
>> -> Not exported to the m2 repository
>>  
>>
> Yes, IIRC, we decided a while ago to have samples as separate blocks.
> Carsten have allready done this for the portal. For the sample block I
> think it will be a OSGi bundle and real block as well. It will have an
> block.xml that describes where the sitemap is (and possibly other
> things) and it will export sitemap functionality that will be mounted at
> a certain point in the URI space.

Ok got it now.

>> 3)org.apache.cocoon.lucene.test
>> -> mavenized, non-osgi block with (unit)tests for 1)
>> -> Explicit pom dependency on 1)
>> -> Not exported to the m2 repository
>>  
>>
> For unit tests I'm not certain about the best way to solve it. I think
> that it might become unpractical to manage them without using OSGi, as
> OSGi takes care about the classloading for blocks that depend on other
> blocks, without OSGi we have to simulate its classloading behaviour. OTH

I forgot about the special requirements that OSGi dependency resolution
has. Yes, it will become mighty unpractical and a waste of energy to try
and manage this ourselves.

> if we use OSGi, the block will need to export all packages that it want
> to unit test, if the tests are in a separate block, this kills
> isolation. Maybe we can have the unit tests inside the block and be able
> to remove them when exporting to the M2 repo? Are there any "design
> patterns" for unit testing Eclipse plugins that we can reuse?

IIUC, m2 supports this layout with the <testSourceDirectory/> and
<testOutputDirectory/> elements.

> For functional tests it makes sense to have a separate test block that
> test the block from the "outside". Knopflerfish have a JUnit bundle that
> supports such testing
> http://www.knopflerfish.org/releases/1.3.3/jars/junit/junit_all-1.0.0.html,
> http://www.knopflerfish.org/releases/1.3.3/jars/junit_runner/junit_runner_all-1.0.0.html.

I hope m2's unittest implementation is pluggable, otherwise this sounds
like a good candidate for an m2 plugin.



Jorg
(with a note to self: start reading up on OSGi!)

Reply via email to