You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by mb...@apache.org on 2006/11/22 01:01:14 UTC
svn commit: r477976 - in /ant/core/trunk/src:
main/org/apache/tools/ant/taskdefs/DependSet.java
tests/antunit/taskdefs/dependset/test.xml
Author: mbenson
Date: Tue Nov 21 16:01:13 2006
New Revision: 477976
URL: http://svn.apache.org/viewvc?view=rev&rev=477976
Log:
fix regression: dependset fails if target directory does not exist
BZ 40916
Modified:
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/DependSet.java
ant/core/trunk/src/tests/antunit/taskdefs/dependset/test.xml
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/DependSet.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/DependSet.java?view=diff&rev=477976&r1=477975&r2=477976
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/DependSet.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/DependSet.java Tue Nov 21 16:01:13 2006
@@ -18,7 +18,9 @@
package org.apache.tools.ant.taskdefs;
+import java.io.File;
import java.util.Iterator;
+import java.util.Vector;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.types.Path;
@@ -30,6 +32,7 @@
import org.apache.tools.ant.types.resources.Sort;
import org.apache.tools.ant.types.resources.Union;
import org.apache.tools.ant.types.resources.Restrict;
+import org.apache.tools.ant.types.resources.Resources;
import org.apache.tools.ant.types.resources.FileResource;
import org.apache.tools.ant.types.resources.selectors.Not;
import org.apache.tools.ant.types.resources.selectors.Exists;
@@ -108,6 +111,27 @@
super(rc, DATE_DESC);
}
}
+ private static class HideMissingBasedir implements ResourceCollection {
+ private FileSet fs;
+
+ private HideMissingBasedir(FileSet fs) {
+ this.fs = fs;
+ }
+ public Iterator iterator() {
+ return basedirExists() ? fs.iterator() : Resources.EMPTY_ITERATOR;
+ }
+ public int size() {
+ return basedirExists() ? fs.size() : 0;
+ }
+ public boolean isFilesystemOnly() {
+ return true;
+ }
+ private boolean basedirExists() {
+ File basedir = fs.getDir();
+ //trick to evoke "basedir not set" if null:
+ return basedir == null || basedir.exists();
+ }
+ }
private Union sources = null;
private Path targets = null;
@@ -151,7 +175,7 @@
* @param fs the FileSet to add.
*/
public void addTargetfileset(FileSet fs) {
- createTargets().add(fs);
+ createTargets().add(new HideMissingBasedir(fs));
}
/**
Modified: ant/core/trunk/src/tests/antunit/taskdefs/dependset/test.xml
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/taskdefs/dependset/test.xml?view=diff&rev=477976&r1=477975&r2=477976
==============================================================================
--- ant/core/trunk/src/tests/antunit/taskdefs/dependset/test.xml (original)
+++ ant/core/trunk/src/tests/antunit/taskdefs/dependset/test.xml Tue Nov 21 16:01:13 2006
@@ -93,8 +93,20 @@
</au:assertTrue>
</target>
+ <target name="test9">
+ <au:assertFalse>
+ <available file="test9dir" type="dir" />
+ </au:assertFalse>
+ <touch file="test9.tmp" />
+ <dependset>
+ <srcfileset dir="." includes="test9.tmp" />
+ <targetfileset dir="test9dir" />
+ </dependset>
+ </target>
+
<target name="tearDown">
<delete file="test4.tmp" />
+ <delete file="test9.tmp" />
<delete file="older.tmp" />
<delete file="newer.tmp" />
</target>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org