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 10:51:45 UTC
svn commit: r1002966 - 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 08:51:45 2010
New Revision: 1002966
URL: http://svn.apache.org/viewvc?rev=1002966&view=rev
Log:
[MRELEASE-536] CommonBasedir Calculation fails on windows. Adjusted case sensitivity in getBaseWorkingDirectoryParentCount as well
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=1002966&r1=1002965&r2=1002966&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 08:51:45 2010
@@ -202,7 +202,7 @@ public class ReleaseUtil
// 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();
+ dir = dir.toLowerCase( Locale.ENGLISH );
}
// always end in / so that we know what is a path and what is a partial directory name in the next call
@@ -232,14 +232,23 @@ public class ReleaseUtil
public static int getBaseWorkingDirectoryParentCount( String basedir, String workingDirectory )
{
int num = 0;
- if ( !workingDirectory.equals( basedir ) && workingDirectory.startsWith( basedir ) )
+
+ // we can safely assume case-insensitivity as we are just backtracking, not comparing. This helps with issues
+ // on Windows with C: vs c:
+ workingDirectory = workingDirectory.toLowerCase( Locale.ENGLISH );
+ basedir = basedir.toLowerCase( Locale.ENGLISH );
+
+ File workingDirectoryFile = new File( workingDirectory );
+ File basedirFile = new File( basedir );
+
+ if ( !workingDirectoryFile.equals( basedirFile ) && workingDirectory.startsWith( basedir ) )
{
do
{
- workingDirectory = new File( workingDirectory ).getParent();
+ workingDirectoryFile = workingDirectoryFile.getParentFile();
num++;
}
- while ( workingDirectory.length() > basedir.length() );
+ while ( !workingDirectoryFile.equals( basedirFile ) );
}
return num;
}
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=1002966&r1=1002965&r2=1002966&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 08:51:45 2010
@@ -188,6 +188,41 @@ public class ReleaseUtilTest
assertEquals( "scm:svn:http://svn.repo.com/flat-multi-module/trunk/", actual );
}
+ public void testGetBaseWorkingDirectoryParentCountSameDirectory()
+ {
+ String workingDirectory = "/working/directory/maven/release";
+ String basedir = "/working/directory/maven/release";
+ assertEquals( 0, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
+ }
+
+ public void testGetBaseWorkingDirectoryParentCountSubdirectory()
+ {
+ String workingDirectory = "/working/directory/maven/release";
+ String basedir = "/working/directory/maven/release/maven-release-manager";
+ assertEquals( 0, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
+ }
+
+ public void testGetBaseWorkingDirectoryParentCountParentDirectory()
+ {
+ String workingDirectory = "/working/directory/maven/release/maven-release-manager";
+ String basedir = "/working/directory/maven/release";
+ assertEquals( 1, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
+ }
+
+ public void testGetBaseWorkingDirectoryParentCountParentDirectoryMultiple()
+ {
+ String workingDirectory = "/working/directory/maven/release/maven-release-manager";
+ String basedir = "/working/directory";
+ assertEquals( 3, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
+ }
+
+ public void testGetBaseWorkingDirectoryParentCountDifferentCase()
+ {
+ String workingDirectory = "/Working/Directory/maven/release/maven-release-manager";
+ String basedir = "/working/directory";
+ assertEquals( 3, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
+ }
+
private static MavenProject createProject( final String basedir )
{
return new MavenProject()