From 5c5b959ca73e40af4f23b845579bbb7fa5e73bb3 Mon Sep 17 00:00:00 2001 From: Magesh Umasankar Date: Sun, 3 Mar 2002 01:30:04 +0000 Subject: [PATCH] 1. Fix bug where ignored s. 2. Add filterset based test to CopyTest. 3. Add MoveTest. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271675 13f79535-47bb-0310-9956-ffa450edef68 --- WHATSNEW | 2 + src/etc/testcases/taskdefs/copy.filterset | 1 + src/etc/testcases/taskdefs/copy.xml | 9 ++ .../taskdefs/expected/copy.filterset.filtered | 1 + src/etc/testcases/taskdefs/move.xml | 18 ++++ .../org/apache/tools/ant/taskdefs/Move.java | 41 +++++---- .../apache/tools/ant/taskdefs/CopyTest.java | 43 +++++---- .../apache/tools/ant/taskdefs/MoveTest.java | 90 +++++++++++++++++++ 8 files changed, 174 insertions(+), 31 deletions(-) create mode 100644 src/etc/testcases/taskdefs/copy.filterset create mode 100644 src/etc/testcases/taskdefs/expected/copy.filterset.filtered create mode 100644 src/etc/testcases/taskdefs/move.xml create mode 100644 src/testcases/org/apache/tools/ant/taskdefs/MoveTest.java diff --git a/WHATSNEW b/WHATSNEW index 5d03fe46f..7463d784d 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -38,6 +38,8 @@ Changes that could break older environments: Fixed bugs: ----------- +* Fixed bug where ignored s. + * Ant works properly with the combination of Java1.4/WindowsXP * Fixed bug where used to sometimes invoke class constructors twice. diff --git a/src/etc/testcases/taskdefs/copy.filterset b/src/etc/testcases/taskdefs/copy.filterset new file mode 100644 index 000000000..367acbb26 --- /dev/null +++ b/src/etc/testcases/taskdefs/copy.filterset @@ -0,0 +1 @@ +This is the @TITLE@. \ No newline at end of file diff --git a/src/etc/testcases/taskdefs/copy.xml b/src/etc/testcases/taskdefs/copy.xml index 81785196a..712970e81 100644 --- a/src/etc/testcases/taskdefs/copy.xml +++ b/src/etc/testcases/taskdefs/copy.xml @@ -44,6 +44,14 @@ + + + + + + + + @@ -51,6 +59,7 @@ + diff --git a/src/etc/testcases/taskdefs/expected/copy.filterset.filtered b/src/etc/testcases/taskdefs/expected/copy.filterset.filtered new file mode 100644 index 000000000..ddbcf5d83 --- /dev/null +++ b/src/etc/testcases/taskdefs/expected/copy.filterset.filtered @@ -0,0 +1 @@ +This is the Apache Ant Project. diff --git a/src/etc/testcases/taskdefs/move.xml b/src/etc/testcases/taskdefs/move.xml new file mode 100644 index 000000000..6d584c3e5 --- /dev/null +++ b/src/etc/testcases/taskdefs/move.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/main/org/apache/tools/ant/taskdefs/Move.java b/src/main/org/apache/tools/ant/taskdefs/Move.java index 280ac4496..f0b4fed3f 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Move.java +++ b/src/main/org/apache/tools/ant/taskdefs/Move.java @@ -63,6 +63,7 @@ import org.apache.tools.ant.types.FileSet; import java.io.File; import java.io.IOException; import java.util.Enumeration; +import java.util.Vector; /** * Moves a file or directory to a new file or directory. By default, @@ -87,6 +88,8 @@ import java.util.Enumeration; */ public class Move extends Copy { + private Vector filterSets = null; + public Move() { super(); forceOverwrite = true; @@ -97,6 +100,8 @@ public class Move extends Copy { //************************************************************************ protected void doFileOperations() { + filterSets = getFilterSets(); + //Attempt complete directory renames, if any, first. if (completeDirMap.size() > 0) { Enumeration e = completeDirMap.keys(); @@ -274,26 +279,30 @@ public class Move extends Copy { throws IOException, BuildException { boolean renamed = true; - if (!filtering) { - // ensure that parent dir of dest file exists! - // not using getParentFile method to stay 1.1 compat - String parentPath = destFile.getParent(); - if (parentPath != null) { - File parent = new File(parentPath); - if (!parent.exists()) { - parent.mkdirs(); + if (filterSets != null && filterSets.size() > 0) { + renamed = false; + } else { + if (!filtering) { + // ensure that parent dir of dest file exists! + // not using getParentFile method to stay 1.1 compat + String parentPath = destFile.getParent(); + if (parentPath != null) { + File parent = new File(parentPath); + if (!parent.exists()) { + parent.mkdirs(); + } } - } - if (destFile.exists()) { - if (!destFile.delete()) { - throw new BuildException("Unable to remove existing file " - + destFile); + if (destFile.exists()) { + if (!destFile.delete()) { + throw new BuildException("Unable to remove existing file " + + destFile); + } } + renamed = sourceFile.renameTo(destFile); + } else { + renamed = false; } - renamed = sourceFile.renameTo(destFile); - } else { - renamed = false; } return renamed; } diff --git a/src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java b/src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java index ed4e91e99..c42d672b9 100644 --- a/src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java +++ b/src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java @@ -56,24 +56,27 @@ package org.apache.tools.ant.taskdefs; import org.apache.tools.ant.BuildFileTest; import org.apache.tools.ant.Project; +import org.apache.tools.ant.util.FileUtils; + import java.io.File; +import java.io.IOException; /** * Tests FileSet using the Copy task. * - * @author David Rees + * @author David Rees */ -public class CopyTest extends BuildFileTest { - - public CopyTest(String name) { +public class CopyTest extends BuildFileTest { + + public CopyTest(String name) { super(name); } - public void setUp() { + public void setUp() { configureProject("src/etc/testcases/taskdefs/copy.xml"); } - public void test1() { + public void test1() { executeTarget("test1"); File f = new File(getProjectDir(), "copytest1.tmp"); if ( !f.exists()) { @@ -85,14 +88,14 @@ public class CopyTest extends BuildFileTest { executeTarget("cleanup"); } - public void test2() { + public void test2() { executeTarget("test2"); File f = new File(getProjectDir(), "copytest1dir/copy.xml"); if ( !f.exists()) { fail("Copy failed"); } } - + public void test3() { executeTarget("test3"); File file3 = new File(getProjectDir(), "copytest3.tmp"); @@ -103,7 +106,7 @@ public class CopyTest extends BuildFileTest { assertTrue(file3b.exists()); File file3c = new File(getProjectDir(), "copytest3c.tmp"); assertTrue(file3c.exists()); - + //file length checks rely on touch generating a zero byte file if(file3.length()==0) { fail("could not overwrite an existing, older file"); @@ -114,19 +117,29 @@ public class CopyTest extends BuildFileTest { if(file3b.length()==0) { fail("unexpectedly overwrote an existing, newer file"); } - - //file time checks for java1.2+ + + //file time checks for java1.2+ if (Project.getJavaVersion() != Project.JAVA_1_1) { - assertTrue(file3a.lastModified()==file3.lastModified()); - assertTrue(file3c.lastModified(). + */ + +package org.apache.tools.ant.taskdefs; + +import org.apache.tools.ant.BuildFileTest; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.util.FileUtils; +import java.io.File; +import java.io.IOException; + +/** + * Tests the Move task. + * + * @author Magesh Umasankar + */ +public class MoveTest extends BuildFileTest { + + public MoveTest(String name) { + super(name); + } + + public void setUp() { + configureProject("src/etc/testcases/taskdefs/move.xml"); + } + + public void tearDown() { + executeTarget("cleanup"); + } + + public void testFilterSet() throws IOException { + executeTarget("testFilterSet"); + FileUtils fileUtils = FileUtils.newFileUtils(); + File tmp = new File(getProjectDir(), "move.filterset.tmp"); + File check = new File(getProjectDir(), "expected/copy.filterset.filtered"); + assertTrue(tmp.exists()); + assertTrue(fileUtils.contentEquals(tmp, check)); + } +}