Author: jvanzyl
Date: Sun Feb 26 12:05:54 2006
New Revision: 381149

URL: http://svn.apache.org/viewcvs?rev=381149&view=rev
Log:
[MSUREFIRE-60] workingDirectory in fork mode is not working
submitted by: Dan Tran

Modified:
    
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/SurefireBooter.java

Modified: 
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/SurefireBooter.java
URL: 
http://svn.apache.org/viewcvs/maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/SurefireBooter.java?rev=381149&r1=381148&r2=381149&view=diff
==============================================================================
--- 
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/SurefireBooter.java
 (original)
+++ 
maven/surefire/trunk/surefire-booter/src/main/java/org/apache/maven/surefire/SurefireBooter.java
 Sun Feb 26 12:05:54 2006
@@ -376,11 +376,6 @@
 
         }
 
-        if ( workingDirectory != null )
-        {
-            cli.setWorkingDirectory( workingDirectory.getAbsolutePath() );
-        }
-
         cli.createArgument().setValue( "-classpath" );
 
         cli.createArgument().setValue( surefireBooterJar + PS + plexusUtilsJar 
);
@@ -389,6 +384,13 @@
 
         cli.createArgument().setValue( basedir );
 
+        if ( workingDirectory != null )
+        {
+            //both cli's working directory and  system property "user.dir" 
must have the same value
+            cli.setWorkingDirectory( workingDirectory.getAbsolutePath() );
+            cli.createArgument().setValue( workingDirectory.getAbsolutePath() 
);
+        }
+        
         if ( debug )
         {
             System.out.println( Commandline.toString( cli.getCommandline() ) );
@@ -676,6 +678,13 @@
         throws Exception
     {
         String basedir = args[0];
+        
+        String workingDirectory = null;
+        
+        if ( args.length == 2 )
+        {
+            workingDirectory = args[1];
+        }
 
         ClassLoader classLoader = createForkingClassLoader( basedir );
 
@@ -683,6 +692,11 @@
         Thread.currentThread().setContextClassLoader( classLoader );
 
         setSystemProperties( basedir );
+        
+        if ( workingDirectory != null )
+        {
+            System.setProperty( "user.dir", workingDirectory );
+        }
 
         Properties p = getSurefireProperties( basedir );
 


Reply via email to