fixed testDeleteDontFollowSymlinks() unit test, which failed to delete a symlink linking to its parent directory due to recursion
git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@661480 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/shared/model/fileset/util/FileSetManager.java b/src/main/java/org/apache/maven/shared/model/fileset/util/FileSetManager.java
index b6329bd..b2149aa 100644
--- a/src/main/java/org/apache/maven/shared/model/fileset/util/FileSetManager.java
+++ b/src/main/java/org/apache/maven/shared/model/fileset/util/FileSetManager.java
@@ -299,14 +299,38 @@
if ( file.exists() )
{
- if ( file.isDirectory() && ( fileSet.isFollowSymlinks() || !isSymlink( file ) ) )
+ if ( file.isDirectory() )
{
- if ( verbose && messages != null )
+ if ( fileSet.isFollowSymlinks() || !isSymlink( file ) )
{
- messages.addInfoMessage( "Deleting directory: " + file ).flush();
+ if ( verbose && messages != null )
+ {
+ messages.addInfoMessage( "Deleting directory: " + file ).flush();
+ }
+
+ removeDir( file, fileSet.isFollowSymlinks(), throwsError, warnMessages );
}
+ else
+ { // delete a symlink to a directory without follow
+ if ( verbose && messages != null )
+ {
+ messages.addInfoMessage( "Deleting symlink to directory: " + file ).flush();
+ }
+
+ if ( !file.delete() )
+ {
+ String message = "Unable to delete symlink " + file.getAbsolutePath();
+ if ( throwsError )
+ {
+ throw new IOException( message );
+ }
- removeDir( file, fileSet.isFollowSymlinks(), throwsError, warnMessages );
+ if ( !warnMessages.contains( message ) )
+ {
+ warnMessages.add( message );
+ }
+ }
+ }
}
else
{