You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2008/07/17 00:33:58 UTC

svn commit: r677452 - /maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractEmbedderTestCase.java

Author: bentmann
Date: Wed Jul 16 15:33:58 2008
New Revision: 677452

URL: http://svn.apache.org/viewvc?rev=677452&view=rev
Log:
o Considered file extensions in command search to enable tests for Windows

Modified:
    maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractEmbedderTestCase.java

Modified: maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractEmbedderTestCase.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractEmbedderTestCase.java?rev=677452&r1=677451&r2=677452&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractEmbedderTestCase.java (original)
+++ maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/AbstractEmbedderTestCase.java Wed Jul 16 15:33:58 2008
@@ -16,13 +16,16 @@
  */
 
 import java.io.File;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Properties;
 import java.util.StringTokenizer;
 
 import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.util.Os;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.cli.CommandLineUtils;
 
@@ -31,10 +34,13 @@
 {
     protected MavenEmbedder maven;
 
-    private String defaultPath;
-
     private List defaultPathList;
 
+    /**
+     * The file extensions used to resolve command names to executables. Each extension must have a leading period.
+     */
+    private List commandExtensions;
+
     protected void setUp()
         throws Exception
     {
@@ -51,7 +57,9 @@
         // but if they are not present on the machine we don't want tests to fail. Case in point would be using SVN via the SCM plugin. We'll
         // run it if we can, pass through gracefully otherwise.
 
-        defaultPath = CommandLineUtils.getSystemEnvVars().getProperty( "PATH" );
+        Properties env = CommandLineUtils.getSystemEnvVars( !Os.isFamily( Os.FAMILY_WINDOWS ) );
+
+        String defaultPath = env.getProperty( "PATH" );
 
         if ( defaultPath == null )
         {
@@ -59,9 +67,7 @@
         }
         else
         {
-            String separator = System.getProperty( "path.separator" );
-
-            StringTokenizer tokenizer = new StringTokenizer( defaultPath, separator );
+            StringTokenizer tokenizer = new StringTokenizer( defaultPath, File.pathSeparator );
 
             defaultPathList = new LinkedList();
 
@@ -72,6 +78,17 @@
                 defaultPathList.add( element );
             }
         }        
+
+        String pathExt = env.getProperty( "PATHEXT" );
+
+        if ( pathExt == null )
+        {
+            commandExtensions = Collections.EMPTY_LIST;
+        }
+        else
+        {
+            commandExtensions = Arrays.asList( pathExt.split( "\\" + File.pathSeparatorChar + "+" ) );
+        }        
     }
 
     protected void tearDown()
@@ -118,12 +135,22 @@
             return null;
         }
 
-        // TODO: Need to resolve it with defaults extension of system
-        // ie. if executable is 'mvn', we must search 'mvn.bat'
         for ( Iterator it = path.iterator(); it.hasNext(); )
         {
             String s = (String) it.next();
 
+            for ( Iterator ite = commandExtensions.iterator(); ite.hasNext(); )
+            {
+                String ext = (String) ite.next();
+
+                f = new File( s, executable + ext );
+
+                if ( f.isFile() )
+                {
+                    return f;
+                }
+            }
+
             f = new File( s, executable );
 
             if ( f.isFile() )