umagesh 02/03/02 17:30:04
Modified: . WHATSNEW
src/etc/testcases/taskdefs copy.xml
src/main/org/apache/tools/ant/taskdefs Move.java
src/testcases/org/apache/tools/ant/taskdefs CopyTest.java
Added: src/etc/testcases/taskdefs copy.filterset move.xml
src/etc/testcases/taskdefs/expected copy.filterset.filtered
src/testcases/org/apache/tools/ant/taskdefs MoveTest.java
Log:
1. Fix bug where <move> ignored <filterset>s.
2. Add filterset based test to CopyTest.
3. Add MoveTest.
Revision Changes Path
1.220 +2 -0 jakarta-ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/jakarta-ant/WHATSNEW,v
retrieving revision 1.219
retrieving revision 1.220
diff -u -r1.219 -r1.220
--- WHATSNEW 28 Feb 2002 10:30:04 -0000 1.219
+++ WHATSNEW 3 Mar 2002 01:30:03 -0000 1.220
@@ -38,6 +38,8 @@
Fixed bugs:
-----------
+* Fixed bug where <move> ignored <filterset>s.
+
* Ant works properly with the combination of Java1.4/WindowsXP
* Fixed bug where <java> used to sometimes invoke class constructors twice.
1.7 +9 -0 jakarta-ant/src/etc/testcases/taskdefs/copy.xml
Index: copy.xml
===================================================================
RCS file: /home/cvs/jakarta-ant/src/etc/testcases/taskdefs/copy.xml,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- copy.xml 5 Feb 2002 00:56:00 -0000 1.6
+++ copy.xml 3 Mar 2002 01:30:03 -0000 1.7
@@ -44,6 +44,14 @@
</copy>
</target>
+ <target name="testFilterSet">
+ <copy file="copy.filterset" tofile="copy.filterset.tmp">
+ <filterset>
+ <filter token="TITLE" value="Apache Ant Project"/>
+ </filterset>
+ </copy>
+ </target>
+
<target name="cleanup">
<delete file="copytest1.tmp"/>
<delete file="copytest3.tmp"/>
@@ -51,6 +59,7 @@
<delete file="copytest3b.tmp"/>
<delete file="copytest3c.tmp"/>
<delete file="copytest_single_file_fileset.tmp"/>
+ <delete file="copy.filterset.tmp"/>
<delete dir="copytest1dir"/>
</target>
1.1 jakarta-ant/src/etc/testcases/taskdefs/copy.filterset
Index: copy.filterset
===================================================================
This is the @[EMAIL PROTECTED]
1.1 jakarta-ant/src/etc/testcases/taskdefs/move.xml
Index: move.xml
===================================================================
<?xml version="1.0"?>
<project name="move-test" basedir="." default="testFilterSet">
<target name="testFilterSet">
<copy file="copy.filterset" tofile="move.filterset"/>
<move file="move.filterset" tofile="move.filterset.tmp">
<filterset>
<filter token="TITLE" value="Apache Ant Project"/>
</filterset>
</move>
</target>
<target name="cleanup">
<delete file="move.filterset.tmp"/>
</target>
</project>
1.1
jakarta-ant/src/etc/testcases/taskdefs/expected/copy.filterset.filtered
Index: copy.filterset.filtered
===================================================================
This is the Apache Ant Project.
1.18 +26 -17
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Move.java
Index: Move.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Move.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- Move.java 27 Feb 2002 20:36:13 -0000 1.17
+++ Move.java 3 Mar 2002 01:30:04 -0000 1.18
@@ -63,6 +63,7 @@
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,
@@ -81,12 +82,14 @@
*
* @author Glenn McAllister <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Magesh Umasankar</a>
- * @version $Revision: 1.17 $
+ * @version $Revision: 1.18 $
*
* @ant:task category="filesystem"
*/
public class Move extends Copy {
+ private Vector filterSets = null;
+
public Move() {
super();
forceOverwrite = true;
@@ -97,6 +100,8 @@
//************************************************************************
protected void doFileOperations() {
+ filterSets = getFilterSets();
+
//Attempt complete directory renames, if any, first.
if (completeDirMap.size() > 0) {
Enumeration e = completeDirMap.keys();
@@ -274,26 +279,30 @@
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;
}
1.7 +28 -15
jakarta-ant/src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java
Index: CopyTest.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- CopyTest.java 5 Feb 2002 08:08:10 -0000 1.6
+++ CopyTest.java 3 Mar 2002 01:30:04 -0000 1.7
@@ -56,24 +56,27 @@
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 <[EMAIL PROTECTED]>
+ * @author David Rees <[EMAIL PROTECTED]>
*/
-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 @@
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 @@
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 @@
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()<file3a.lastModified());
+ assertTrue(file3a.lastModified()==file3.lastModified());
+ assertTrue(file3c.lastModified()<file3a.lastModified());
}
}
-
+
public void testSingleFileFileset() {
executeTarget("test_single_file_fileset");
- File file = new File(getProjectDir(),
+ File file = new File(getProjectDir(),
"copytest_single_file_fileset.tmp");
assertTrue(file.exists());
+ }
+
+ public void testFilterSet() throws IOException {
+ executeTarget("testFilterSet");
+ FileUtils fileUtils = FileUtils.newFileUtils();
+ File tmp = new File(getProjectDir(), "copy.filterset.tmp");
+ File check = new File(getProjectDir(),
+ "expected/copy.filterset.filtered");
+ assertTrue(tmp.exists());
+ assertTrue(fileUtils.contentEquals(tmp, check));
}
}
1.1
jakarta-ant/src/testcases/org/apache/tools/ant/taskdefs/MoveTest.java
Index: MoveTest.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Ant", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
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 <a href="mailto:[EMAIL PROTECTED]">Magesh Umasankar</a>
*/
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));
}
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>