You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2010/09/30 08:42:52 UTC

svn commit: r1002953 - in /maven/release/trunk/maven-release-manager/src: main/java/org/apache/maven/shared/release/util/ReleaseUtil.java test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java

Author: brett
Date: Thu Sep 30 06:42:52 2010
New Revision: 1002953

URL: http://svn.apache.org/viewvc?rev=1002953&view=rev
Log:
[MRELEASE-536] CommonBasedir Calculation fails on windows
Submitted by: Matthias Vach

Modified:
    maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java
    maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java

Modified: maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java?rev=1002953&r1=1002952&r2=1002953&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java (original)
+++ maven/release/trunk/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java Thu Sep 30 06:42:52 2010
@@ -24,6 +24,7 @@ import java.io.IOException;
 import java.io.Reader;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.project.MavenProject;
@@ -193,6 +194,16 @@ public class ReleaseUtil
 
             // we can only normalize paths with /
             String dir = FileUtils.normalize( p.getBasedir().getPath().replace( '\\', '/' ) );
+            if ( separator == '\\' )
+            {
+                // windows has case insensitive filesystem
+                // normalize to lowercase for comparison
+
+                // Not a comprehensive solution to case-insensitive filenames, but only seem to be getting bitten by
+                // C: vs c: as the rest of the path is being returned consistently. Overall this class should rely more
+                // on the Java IO classes instead of string parsing to avoid these issues.
+                dir = dir.toLowerCase();
+            }
 
             // always end in / so that we know what is a path and what is a partial directory name in the next call
             if ( !dir.endsWith( "/" ) )

Modified: maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java
URL: http://svn.apache.org/viewvc/maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java?rev=1002953&r1=1002952&r2=1002953&view=diff
==============================================================================
--- maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java (original)
+++ maven/release/trunk/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java Thu Sep 30 06:42:52 2010
@@ -72,6 +72,14 @@ public class ReleaseUtilTest
                 createProject( "c:\\working\\directory\\flat-multi-module\\webapp" )} ), '\\' ) );
     }
 
+    public void testGetCommonBasedirUppercaseLowerCaseWindows()
+        throws Exception
+    {
+        assertEquals( "c:\\working\\root", ReleaseUtil.getCommonBasedir( Arrays.asList(
+            new MavenProject[]{createProject( "c:\\working\\root" ), createProject( "C:\\WoRkInG\\root\\project1" ),
+                createProject( "c:\\working\\root\\project2" )} ), '\\' ) );
+    }
+
     public void testGetCommonBasedirOfFlatMultiModuleSimilarArtifactIds()
         throws Exception
     {