git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@806442 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -597,15 +597,30 @@ public class Delete extends MatchingTask { | |||
| fs = (FileSet) fs.clone(); | |||
| fs.setProject(getProject()); | |||
| } | |||
| File fsDir = fs.getDir(); | |||
| final File fsDir = fs.getDir(); | |||
| if (fsDir == null) { | |||
| throw new BuildException( | |||
| "File or Resource without directory or file specified"); | |||
| } else if (!fsDir.isDirectory()) { | |||
| handle("Directory does not exist: " + fsDir); | |||
| } else { | |||
| resourcesToDelete.add(fs); | |||
| DirectoryScanner ds = fs.getDirectoryScanner(); | |||
| // the previous line has already scanned the | |||
| // filesystem, in order to avoid a rescan when later | |||
| // iterating, capture the results now and store them | |||
| final String[] files = ds.getIncludedFiles(); | |||
| resourcesToDelete.add(new ResourceCollection() { | |||
| public boolean isFilesystemOnly() { | |||
| return true; | |||
| } | |||
| public int size() { | |||
| return files.length; | |||
| } | |||
| public Iterator iterator() { | |||
| return new FileResourceIterator(getProject(), | |||
| fsDir, files); | |||
| } | |||
| }); | |||
| if (includeEmpty) { | |||
| filesetDirs.add(new ReverseDirs(getProject(), fsDir, | |||
| ds | |||
| @@ -150,4 +150,42 @@ public class NullByteStreamResource extends Resource { | |||
| </copy> | |||
| </au:expectfailure> | |||
| </target> | |||
| <target name="testNotModifiedSelector" | |||
| description="https://issues.apache.org/bugzilla/show_bug.cgi?id=43574" | |||
| > | |||
| <mkdir dir="${input}/images"/> | |||
| <mkdir dir="${input}/cache"/> | |||
| <touch file="${input}/images/foo.jpg"/> | |||
| <mkdir dir="${output}"/> | |||
| <selector id="cache.selector"> | |||
| <not> | |||
| <modified update="true" | |||
| seldirs="false" | |||
| cache="propertyfile" | |||
| algorithm="digest" | |||
| comparator="equal"> | |||
| <param name="cache.cachefile" | |||
| value="${input}/cache/cache.properties"/> | |||
| <param name="algorithm.algorithm" value="MD5"/> | |||
| </modified> | |||
| </not> | |||
| </selector> | |||
| <au:assertFileDoesntExist file="${input}/cache/cache.properties"/> | |||
| <copy todir="${output}" overwrite="true"> | |||
| <fileset dir="${input}/images"> | |||
| <include name="*.jpg" /> | |||
| <selector refid="cache.selector" /> | |||
| </fileset> | |||
| </copy> | |||
| <au:assertFileExists file="${input}/cache/cache.properties"/> | |||
| <au:assertFileDoesntExist file="${output}/foo.jpg"/> | |||
| <copy todir="${output}" overwrite="true"> | |||
| <fileset dir="${input}/images"> | |||
| <include name="*.jpg" /> | |||
| <selector refid="cache.selector" /> | |||
| </fileset> | |||
| </copy> | |||
| <au:assertFileExists file="${output}/foo.jpg"/> | |||
| </target> | |||
| </project> | |||
| @@ -94,4 +94,41 @@ | |||
| <touch file="${output}/foo"/> | |||
| <au:assertFileDoesntExist file="${output}/link" /> | |||
| </target> | |||
| <target name="testNotModifiedSelector" | |||
| description="https://issues.apache.org/bugzilla/show_bug.cgi?id=43574" | |||
| > | |||
| <mkdir dir="${input}/images"/> | |||
| <mkdir dir="${input}/cache"/> | |||
| <touch file="${input}/images/foo.jpg"/> | |||
| <selector id="cache.selector"> | |||
| <not> | |||
| <modified update="true" | |||
| seldirs="false" | |||
| cache="propertyfile" | |||
| algorithm="digest" | |||
| comparator="equal"> | |||
| <param name="cache.cachefile" | |||
| value="${input}/cache/cache.properties"/> | |||
| <param name="algorithm.algorithm" value="MD5"/> | |||
| </modified> | |||
| </not> | |||
| </selector> | |||
| <au:assertFileDoesntExist file="${input}/cache/cache.properties"/> | |||
| <delete> | |||
| <fileset dir="${input}/images"> | |||
| <include name="*.jpg" /> | |||
| <selector refid="cache.selector" /> | |||
| </fileset> | |||
| </delete> | |||
| <au:assertFileExists file="${input}/cache/cache.properties"/> | |||
| <au:assertFileExists file="${input}/images/foo.jpg"/> | |||
| <delete> | |||
| <fileset dir="${input}/images"> | |||
| <include name="*.jpg" /> | |||
| <selector refid="cache.selector" /> | |||
| </fileset> | |||
| </delete> | |||
| <au:assertFileDoesntExist file="${input}/images/foo.jpg"/> | |||
| </target> | |||
| </project> | |||
| @@ -59,4 +59,43 @@ | |||
| <au:assertFileExists file="${output}/foo/bar/baz.txt"/> | |||
| </target> | |||
| <target name="testNotModifiedSelector" | |||
| description="https://issues.apache.org/bugzilla/show_bug.cgi?id=43574" | |||
| > | |||
| <mkdir dir="${input}/images"/> | |||
| <mkdir dir="${input}/cache"/> | |||
| <touch file="${input}/images/foo.jpg"/> | |||
| <mkdir dir="${output}"/> | |||
| <selector id="cache.selector"> | |||
| <not> | |||
| <modified update="true" | |||
| seldirs="false" | |||
| cache="propertyfile" | |||
| algorithm="digest" | |||
| comparator="equal"> | |||
| <param name="cache.cachefile" | |||
| value="${input}/cache/cache.properties"/> | |||
| <param name="algorithm.algorithm" value="MD5"/> | |||
| </modified> | |||
| </not> | |||
| </selector> | |||
| <au:assertFileDoesntExist file="${input}/cache/cache.properties"/> | |||
| <move todir="${output}" overwrite="true"> | |||
| <fileset dir="${input}/images"> | |||
| <include name="*.jpg" /> | |||
| <selector refid="cache.selector" /> | |||
| </fileset> | |||
| </move> | |||
| <au:assertFileExists file="${input}/cache/cache.properties"/> | |||
| <au:assertFileExists file="${input}/images/foo.jpg"/> | |||
| <au:assertFileDoesntExist file="${output}/foo.jpg"/> | |||
| <move todir="${output}" overwrite="true"> | |||
| <fileset dir="${input}/images"> | |||
| <include name="*.jpg" /> | |||
| <selector refid="cache.selector" /> | |||
| </fileset> | |||
| </move> | |||
| <au:assertFileDoesntExist file="${input}/images/foo.jpg"/> | |||
| <au:assertFileExists file="${output}/foo.jpg"/> | |||
| </target> | |||
| </project> | |||