geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jason Dillon <ja...@planet57.com>
Subject Re: svn commit: r432773 - /geronimo/trunk/modules/geronimo-testsupport/src/main/java/org/apache/geronimo/testsupport/TestSupport.java
Date Mon, 21 Aug 2006 04:50:29 GMT
It should work fine in Eclipse too.

I'll see if I can fix why the eclipse plugin is adding that lame  
entry for target/classes/META-INF... seems broke to me.

--jason


On Aug 20, 2006, at 9:43 PM, Gianny Damour wrote:

> This is cool that this also works in IDEA.
>
> Regarding this proble, this is the script that I use to fix  
> the .classpath (from the geronimo dir):
> ls */*/.classpath | while read file; do cat $file | grep -v classes/ 
> META-INF > ${file}_new; mv ${file}_new $file; done
>
> BTW, in Eclipse System.getProperty("basedir", System.getProperty 
> ("user.dir")) was working as by default Eclipse starts JUnit tests  
> in the project working directory, i.e. the module root.
>
> Thanks,
> Gianny
>
>
> On 21/08/2006, at 2:25 PM, Jason Dillon wrote:
>
>> This was more what I was thinking:
>>
>> <snip>
>> protected final File getBaseDir() {
>>     File dir;
>>
>>     // If ${basedir} is set, then honor it
>>     String tmp = System.getProperty("basedir");
>>     if (tmp != null) {
>>         dir = new File(tmp);
>>     }
>>     else {
>>         // Find the directory which this class (or really the sub- 
>> class of TestSupport) is defined in.
>>         String path = getClass().getProtectionDomain 
>> ().getCodeSource().getLocation().getFile();
>>
>>         // We expect the file to be in target/test-classes, so go  
>> up 2 dirs
>>         dir = new File(path).getParentFile().getParentFile();
>>
>>         // Set ${basedir} which is needed by logging to initialize
>>         System.setProperty("basedir", dir.getPath());
>>     }
>>
>>     return dir;
>> }
>> </snip>
>>
>> Appears to work well too, in IDEA at least, probably works fine in  
>> Eclipse too... but I've got a ton of "Cannot nest output  
>> folder..." errors that prevent me from actually checking.
>>
>> --jason
>>
>>
>> On Aug 19, 2006, at 8:11 AM, Dain Sundstrom wrote:
>>
>>> I don't think that trick will work for an IDE, as it will only  
>>> tell you which directory the IDE started in.  In intellij you can  
>>> use something like this:
>>>
>>>     public static String baseDir() {
>>>         Class myClass = null; // TestClass.class
>>>
>>>         URL classUrl = myClass.getClassLoader().getResource 
>>> (myClass.getName().replace('.', '/') + ".class");
>>>         if (classUrl == null) {
>>>             throw new RuntimeException("Could not find TestClass");
>>>         }
>>>
>>>         File targetDir = null;
>>>         try {
>>>             URLConnection urlConnection = classUrl.openConnection();
>>>
>>>             if (urlConnection instanceof JarURLConnection) {
>>>                 JarURLConnection jarConnection =  
>>> (JarURLConnection) urlConnection;
>>>                 classUrl = jarConnection.getJarFileURL();
>>>
>>>                 targetDir = new File(new URI(classUrl.toString 
>>> ())).getParentFile();
>>>             } else {
>>>                 File classesDir = new File(new URI 
>>> (classUrl.toString())).getParentFile();
>>>                 for (char c : myClass.getName().toCharArray()) {
>>>                     if (c == '.') {
>>>                         classesDir = classesDir.getParentFile();
>>>                     }
>>>                 }
>>>             }
>>>         } catch (Exception e) {
>>>             log.debug("Could not determine classes installation  
>>> directory", e);
>>>         }
>>>
>>>         if (targetDir != null) {
>>>             File moduleDir = targetDir.getParentFile();
>>>             return moduleDir.getAbsolutePath();
>>>         } else {
>>>             return System.getProperty("basedir",  
>>> System.getProperty("user.dir"));
>>>         }
>>>
>>>     }
>>>
>>> Make sure to test this code, because I didn't :)
>>>
>>> -dain
>>>
>>>
>>> On Aug 18, 2006, at 4:47 PM, Jason Dillon wrote:
>>>
>>>> Ya, I will add that as soon as I can verify that it works in  
>>>> IDEA an Eclipse... probably sometime next week.
>>>>
>>>> --jason
>>>>
>>>>
>>>> On Aug 18, 2006, at 4:31 PM, Gianny Damour wrote:
>>>>
>>>>> On 19/08/2006, at 9:15 AM, jdillon@apache.org wrote:
>>>>>
>>>>>> Author: jdillon
>>>>>> Date: Fri Aug 18 16:15:53 2006
>>>>>> New Revision: 432773
>>>>>>
>>>>>> URL: http://svn.apache.org/viewvc?rev=432773&view=rev
>>>>>> Log:
>>>>>> Comments about BASEDIR and IDE magic
>>>>>>
>>>>>> Modified:
>>>>>>     geronimo/trunk/modules/geronimo-testsupport/src/main/java/ 
>>>>>> org/apache/geronimo/testsupport/TestSupport.java
>>>>>>
>>>>>> Modified: geronimo/trunk/modules/geronimo-testsupport/src/main/ 
>>>>>> java/org/apache/geronimo/testsupport/TestSupport.java
>>>>>> URL: http://svn.apache.org/viewvc/geronimo/trunk/modules/ 
>>>>>> geronimo-testsupport/src/main/java/org/apache/geronimo/ 
>>>>>> testsupport/TestSupport.java? 
>>>>>> rev=432773&r1=432772&r2=432773&view=diff
>>>>>> =================================================================

>>>>>> =============
>>>>>> --- geronimo/trunk/modules/geronimo-testsupport/src/main/java/ 
>>>>>> org/apache/geronimo/testsupport/TestSupport.java (original)
>>>>>> +++ geronimo/trunk/modules/geronimo-testsupport/src/main/java/ 
>>>>>> org/apache/geronimo/testsupport/TestSupport.java Fri Aug 18  
>>>>>> 16:15:53 2006
>>>>>> @@ -37,6 +37,12 @@
>>>>>>      private static final File BASEDIR;
>>>>>>
>>>>>>      static {
>>>>>> +        //
>>>>>> +        // TODO: Add some special magic here to figure this  
>>>>>> out when we are running from
>>>>>> +        //       and IDE, like IDEA or Eclipse.  user.dir/ 
>>>>>> target might work... but need
>>>>>> +        //       to validate what env each IDE has this set to.
>>>>>> +        //
>>>>>> +
>>>>>>          String tmp = System.getProperty("basedir");
>>>>>
>>>>> Hi Jason,
>>>>>
>>>>> This is the trick that Dain has suggested:
>>>>>
>>>>>     private static final tmp = System.getProperty("basedir",  
>>>>> System.getProperty("user.dir"));
>>>>>
>>>>>
>>>>> Thanks,
>>>>> Gianny
>>>>>
>>>>>
>>>>>
>>>>>>          if (tmp == null) {
>>>>>>              throw new Error("Missing 'basedir' property;  
>>>>>> tests need this property set to run correctly");
>>>>>>
>>>>>>
>>>>>
>>>
>>
>


Mime
View raw message