Hi Chuck,

On 20/09/2011, at 2:49 AM, Chuck Hill wrote:

>> That is, it can't find JavaMemoryAdaptor.framework when it needs it.  I'm 
>> having this problem when running unit tests in both application and 
>> framework bundles of my own.  JavaMemoryAdaptor.framework is on the 
>> .classpath (confirmed by running 'ant -v'),
> 
> The jar file in Resources/Java is on the classpath?  That is what gets used 
> to locate the bundle.

Yes.  This is in Ant's classpath as it's running the test case:

/Users/paulh/tmp/WT/workspace/Root/Library/Frameworks/JavaMemoryAdaptor.framework/Resources/Java/JavaMemoryAdaptor.jar

>> and it's present in Root/Library/Frameworks of the Hudson workspace.  
>> Root/wolips.properties points wo.local.frameworks to that directory.  I use 
>> WOPath to construct the testing classpath (for User, Local, System anyway).  
>> And yet when I add something like this to a test method:
>> 
>>      NSArray bundles = NSBundle.frameworkBundles();
>>      System.out.println(bundles.count());
>>      System.out.println(bundles);
>> 
>> Inside Eclipse I get 29 bundles, including JavaMemoryAdaptor.framework, and 
>> outside Eclipse I get 9 bundles, just the core WO System bundles.  Surely 
>> this is the source of the problem?
> 
> Yes.  Do you have project bundles enabled in Eclipse?

Yes, I have "Generate bundles" checked in Eclipse.  Just in case there's some 
confusion here, though, I am _not_ using Ant to run the tests within Eclipse.  
When I say it works in Eclipse, I mean I selected the test class, then Run As > 
JUnit Test.

>> I've been bothering Henrique about this for a while, but I'm just not 
>> convinced it's WOUnit's problem.  I think it's my Hudson build environment.  
>> I know I'm not giving a lot to go on here, but can anyone suggest where I 
>> even _start_ looking to clarify this further?
> 
> I doubt this is a WOUnit problem.  For Hudson, are you wanting to use the 
> source project as the bundle (project bundles enabled) or the built .woa or 
> .framework directory as the bundle?  If you can tell me how you have things 
> setup, I should be able to help you figure out what needs to be done.

I'm using the .woa directory as the bundle.  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" />
                                <pathelement location="${junit.jar}" />
                                <pathelement location="${wounit.jar}" />
                                <pathelement location="${bin.tests}" />
                                <!-- WTModel models -->
                                <pathelement 
location="Root/Library/Frameworks/WTModel.framework" />
                        </classpath>                    
                        <formatter type="brief" usefile="false" />
                        <formatter type="xml" />
                        <batchtest todir="${junit.results}">
                                <fileset dir="${bin.tests}">
                                        <include name="**/*Test.class" />
                                </fileset>
                        </batchtest>
                </junit>

There's a bit of additional stuff in the 'junit' target (test results and so 
on), but I doubt it's relevant.  'testing.classpath' is defined like this:

        <typedef name="wopath" classname="org.objectstyle.woproject.ant.WOPath" 
/>
        <wopath id="testing.classpath">
                <frameworks root="User" eclipse="true" />
                <frameworks root="Local" eclipse="true" />
                <frameworks root="System" eclipse="true" />
        </wopath>

'junit.jar' and 'wounit.jar' are supplied on the command line, and the JARs 
exist and are being found.  'bin.tests' has been defined.

I am using the popular setupWorkspace.sh script to setup the workspace.  I've 
made a few modifications to that script, but the workspace structure itself 
remains unchanged.  That is, it creates a Root directory, which contains 
Library, Network, System, User directories, all containing the frameworks you 
would expect.  JavaMemoryAdaptor.framework (and the rest of Wonder) is in 
/Users/paulh/tmp/WT/workspace/Root/Library/Frameworks at test runtime.  
wolips.properties (passed in on the command line) is also in Root and looks 
like this:

wo.system.root=/Users/paulh/tmp/WT/workspace/Root/System
wo.user.frameworks=/Users/paulh/tmp/WT/workspace/Root/User/Library/Frameworks
wo.system.frameworks=/Users/paulh/tmp/WT/workspace/Root/System/Library/Frameworks
wo.bootstrapjar=/System/Library/WebObjects/JavaApplications/wotaskd.woa/WOBootstrap.jar
wo.network.frameworks=/Users/paulh/tmp/WT/workspace/Root/Network/Library/Frameworks
wo.api.root=/Developer/ADC%20Reference%20Library/documentation/WebObjects/Reference/API/
wo.network.root=/Users/paulh/tmp/WT/workspace/Root/Network
wo.extensions=/Users/paulh/tmp/WT/workspace/Root/Library/WebObjects/Extensions
wo.user.root=/Users/paulh/tmp/WT/workspace/Root/User
wo.local.frameworks=/Users/paulh/tmp/WT/workspace/Root/Library/Frameworks
wo.apps.root=/Users/paulh/tmp/WT/workspace/Root/Library/WebObjects/Applications
wo.local.root=/Users/paulh/tmp/WT/workspace/Root

Finally, this is the command line I'm running by hand which should be exactly 
what Hudson is running:

ant -propertyfile Root/wolips.properties -lib Root/lib -lib 
/Users/paulh/Projects/Hudson/Deps 
-Djunit.jar=/Users/paulh/Projects/Hudson/Deps/junit-4.8.2.jar 
-Dwounit.jar=/Users/paulh/Projects/Hudson/Deps/wounit-1.2-SNAPSHOT-2.jar junit

Thanks Chuck—let me know if you can think of anything that might be causing a 
problem here.


-- 
Paul.

http://logicsquad.net/


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to