Re: Bundle loading during unit testing outside Eclipse
Re: Bundle loading during unit testing outside Eclipse
- Subject: Re: Bundle loading during unit testing outside Eclipse
- From: Paul Hoadley <email@hidden>
- Date: Wed, 21 Sep 2011 08:27:38 +0930
On 21/09/2011, at 7:51 AM, Chuck Hill wrote:
>>>> I'm using the .woa directory as the bundle.
>>>
>>> The .woa directory inside the source project (dist/Foo.woa)? Or built someplace else?
>>
>> The former. The source project gets checked out into a Hudson workspace, and it builds in dist/WT2.woa. (Yes, the WO project name differs from the Hudson project name by one character, which is why the paths I've quoted just have "WT" in them. In retrospect this is not ideal, but I don't _think_ it's causing any problems.)
>
> So the project is at /whatever/WT/ and built into /whatever/WT/dist/WT2.woa? That might cause confusion.
Yeah, it's just the difference between the Hudson project name and the Ant/WO project name. I can try making them the same if I don't get anywhere.
> Are the frameworks embedded in that bundle?
Yes.
> I am trying to work out how NSBundle is not seeing these. There are some Funky Things (tm) in Eclipse to detect bundles that don't happen when run from the comment line.
Yeah. I wish I knew what they were.
>>>> I call junit like this:
>>>>
>>>> <junit haltonfailure="false"
>>>> fork="true"
>>>> dir="${dest.dir}/${project.name}.woa"
>>>> printsummary="true"
>>>> failureproperty="test.failed">
>>>> <classpath refid="testing.classpath" />
>>>> <classpath>
>>>> <pathelement location="bin" />
>>>
>>> What is that for? Those are the compiled classes in the app?
>>
>> Exactly. Does that not need to be there?
>
> I think this might make main bundle identification hard. Though that does not seem to be the issue.
> I'd use
> <pathelement location="${dest.dir}/${project.name}.woa/Contents/Resources/Java/${project.name}.jar" />
>
> (or is that ${project.name.lowercase}.jar ?)
That also works, though didn't help finding the Local bundles.
>>> Try adding
>>> <pathconvert property="junit.testing.classpath" refid="testing.classpath"/>
>>> <echo> testing.classpath is ${testing.classpath} />
>>>
>>> And see if the result is what you expect.
>>
>> Did you mean ${junit.testing.classpath}?
>
> er, yes. That one.
>
>
>> Yes, it's exactly what I would expect: all of the frameworks, including JavaMemoryAdapter.framework/Resources/Java/JavaMemoryAdaptor.jar.
>
> Relative or absolute paths?
Sorry, absolute.
>> They're also all on the classpath for the JVM that's launching the JUnit tests, so that all seems to be working.
>
> Well, you are forking the JVM for junit.
>
>> The only place they're _not_ is wherever they need to be to get NSBundle to load them. I remain stumped.
>
> Try getting the classloader in one of your tests and print out the classpath that it really is using.
It's as expected, including:
/Users/paulh/tmp/WT/workspace/Root/Library/Frameworks/JavaMemoryAdaptor.framework/Resources/Java/JavaMemoryAdaptor.jar
--
Paul.
http://logicsquad.net/
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden