From a360e39fa70b203d8faf34c0fa43c5709b8f3295 Mon Sep 17 00:00:00 2001 From: Matthew Jason Benson Date: Mon, 24 Oct 2005 22:30:21 +0000 Subject: [PATCH] was still failing. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@328172 13f79535-47bb-0310-9956-ffa450edef68 --- src/etc/testcases/taskdefs/delete.xml | 6 ++++ .../org/apache/tools/ant/taskdefs/Delete.java | 36 +++++++++++-------- .../apache/tools/ant/taskdefs/DeleteTest.java | 3 ++ 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/etc/testcases/taskdefs/delete.xml b/src/etc/testcases/taskdefs/delete.xml index e56f1998c..8b2d80368 100644 --- a/src/etc/testcases/taskdefs/delete.xml +++ b/src/etc/testcases/taskdefs/delete.xml @@ -109,6 +109,12 @@ + + + + + + diff --git a/src/main/org/apache/tools/ant/taskdefs/Delete.java b/src/main/org/apache/tools/ant/taskdefs/Delete.java index 3a7a6fa34..b37bb5f34 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Delete.java +++ b/src/main/org/apache/tools/ant/taskdefs/Delete.java @@ -532,27 +532,33 @@ public class Delete extends MatchingTask { FileSet implicit = getImplicitFileSet(); p.add(includeEmpty ? new BCFileSet(implicit) : implicit); } - Restrict e = new Restrict(); - e.add(EXISTS); - e.add(p); + Restrict exists = new Restrict(); + exists.add(EXISTS); + exists.add(p); // delete the files in the resource collections; sort to files, then dirs Sort s = new Sort(); s.add(REVERSE_FILESYSTEM); - s.add(e); - for (Iterator iter = s.iterator(); iter.hasNext();) { - FileResource r = (FileResource) iter.next(); - if (!(r.isDirectory()) || r.getFile().list().length == 0) { - log("Deleting " + r, verbosity); - if (!delete(r.getFile())) { - String message = "Unable to delete " - + (r.isDirectory() ? "directory " : "file ") + r; - if (failonerror) { - throw new BuildException(message); + s.add(exists); + String errorMessage = null; + try { + for (Iterator iter = s.iterator(); iter.hasNext();) { + FileResource r = (FileResource) iter.next(); + if (!(r.isDirectory()) || r.getFile().list().length == 0) { + log("Deleting " + r, verbosity); + if (!delete(r.getFile())) { + errorMessage = "Unable to delete " + + (r.isDirectory() ? "directory " : "file ") + r; } - log(message, - quiet ? Project.MSG_VERBOSE : Project.MSG_WARN); } } + } catch (Exception e) { + errorMessage = e.getMessage(); + } + if (errorMessage != null) { + if (failonerror) { + throw new BuildException(errorMessage); + } + log(errorMessage, quiet ? Project.MSG_VERBOSE : Project.MSG_WARN); } } diff --git a/src/testcases/org/apache/tools/ant/taskdefs/DeleteTest.java b/src/testcases/org/apache/tools/ant/taskdefs/DeleteTest.java index e757fc85b..9ea945e3a 100644 --- a/src/testcases/org/apache/tools/ant/taskdefs/DeleteTest.java +++ b/src/testcases/org/apache/tools/ant/taskdefs/DeleteTest.java @@ -64,4 +64,7 @@ public class DeleteTest extends BuildFileTest { public void test10() { executeTarget("test10"); } + public void test11() { + executeTarget("test11"); + } }