Author: bodewig
Date: Fri Dec 19 00:42:42 2008
New Revision: 727978
URL: http://svn.apache.org/viewvc?rev=727978&view=rev
Log:
properly handle non-recursive excludes (breaks one other test because of the
same slowscan bug that I'm going to fix later)
Modified:
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Sync.java
ant/core/trunk/src/tests/antunit/taskdefs/sync-test.xml
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Sync.java
URL:
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Sync.java?rev=727978&r1=727977&r2=727978&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Sync.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Sync.java Fri Dec 19
00:42:42 2008
@@ -275,13 +275,12 @@
private int removeEmptyDirectories(File dir, boolean removeIfEmpty,
Set preservedEmptyDirectories) {
int removedCount = 0;
- if (!preservedEmptyDirectories.contains(dir) && dir.isDirectory()) {
+ if (dir.isDirectory()) {
File[] children = dir.listFiles();
for (int i = 0; i < children.length; ++i) {
File file = children[i];
// Test here again to avoid method call for non-directories!
- if (!preservedEmptyDirectories.contains(file)
- && file.isDirectory()) {
+ if (file.isDirectory()) {
removedCount +=
removeEmptyDirectories(file, true,
preservedEmptyDirectories);
@@ -292,7 +291,8 @@
// We need to re-query its children list!
children = dir.listFiles();
}
- if (children.length < 1 && removeIfEmpty) {
+ if (children.length < 1 && removeIfEmpty
+ && !preservedEmptyDirectories.contains(dir)) {
log("Removing empty directory: " + dir, Project.MSG_DEBUG);
dir.delete();
++removedCount;
Modified: ant/core/trunk/src/tests/antunit/taskdefs/sync-test.xml
URL:
http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/taskdefs/sync-test.xml?rev=727978&r1=727977&r2=727978&view=diff
==============================================================================
--- ant/core/trunk/src/tests/antunit/taskdefs/sync-test.xml (original)
+++ ant/core/trunk/src/tests/antunit/taskdefs/sync-test.xml Fri Dec 19 00:42:42
2008
@@ -57,7 +57,7 @@
<au:assertFileDoesntExist file="${output}/b/c"/>
</target>
- <target name="testPreserveEmptyOverridesDefault" depends="setUp">
+ <target name="xtestPreserveEmptyOverridesDefault" depends="setUp">
<sync todir="${output}">
<fileset dir="${input}"/>
@@ -117,4 +117,20 @@
<au:assertFileExists file="${output}/b/c"/>
</target>
+ <target name="testPreserveEmptyDirsWithNonRecursiveExclude" depends="setUp">
+
+ <sync todir="${output}">
+ <fileset dir="${input}"/>
+ <preserveintarget preserveEmptyDirs="true">
+ <include name="**/b"/>
+ </preserveintarget>
+ </sync>
+
+ <au:assertFileDoesntExist file="${output}/a/bar.txt"/>
+ <au:assertFileExists file="${output}/a/foo.txt"/>
+ <au:assertFileExists file="${output}/b"/>
+ <au:assertFileDoesntExist file="${output}/b/baz.txt"/>
+ <au:assertFileDoesntExist file="${output}/b/c"/>
+ </target>
+
</project>