geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gianny Damour <gianny.dam...@optusnet.com.au>
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:43:44 GMT
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