antoine 2003/08/06 05:24:42 Modified: src/testcases/org/apache/tools/ant/taskdefs/optional/net FTPTest.java src/main/org/apache/tools/ant/taskdefs/optional/net FTP.java src/etc/testcases/taskdefs/optional/net ftp.xml Log: Issue a warning message indicating that selectors within filesets are not supported in the ftp task when the fileset is remote (all actions except put) PR: 18280 Revision Changes Path 1.5 +36 -24 ant/src/testcases/org/apache/tools/ant/taskdefs/optional/net/FTPTest.java Index: FTPTest.java =================================================================== RCS file: /home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/optional/net/FTPTest.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- FTPTest.java 6 Aug 2003 10:58:24 -0000 1.4 +++ FTPTest.java 6 Aug 2003 12:24:42 -0000 1.5 @@ -54,14 +54,16 @@ package org.apache.tools.ant.taskdefs.optional.net; import org.apache.tools.ant.BuildFileTest; +import org.apache.tools.ant.DirectoryScanner; +import org.apache.tools.ant.types.FileSet; import org.apache.tools.ant.taskdefs.optional.net.FTP; import org.apache.tools.ant.util.JavaEnvUtils; import org.apache.tools.ant.taskdefs.condition.Os; import java.io.File; import java.io.IOException; -import java.util.TreeSet; -import java.util.Iterator; +import java.util.Arrays; + import org.apache.commons.net.ftp.FTPClient; public class FTPTest extends BuildFileTest{ @@ -203,7 +205,27 @@ } } } - + public void testGetWithSelector() { + expectLogContaining("ftp-get-with-selector", + "selectors are not supported in remote filesets"); + FileSet fsDestination = (FileSet) getProject().getReference("fileset-destination-without-selector"); + DirectoryScanner dsDestination = fsDestination.getDirectoryScanner(getProject()); + dsDestination.scan(); + String [] sortedDestinationDirectories = dsDestination.getIncludedDirectories(); + String [] sortedDestinationFiles = dsDestination.getIncludedFiles(); + for (int counter = 0; counter < sortedDestinationDirectories.length; counter++) { + sortedDestinationDirectories[counter] = + sortedDestinationDirectories[counter].replace(File.separatorChar, '/'); + } + for (int counter = 0; counter < sortedDestinationFiles.length; counter++) { + sortedDestinationFiles[counter] = + sortedDestinationFiles[counter].replace(File.separatorChar, '/'); + } + FileSet fsSource = (FileSet) getProject().getReference("fileset-source-without-selector"); + DirectoryScanner dsSource = fsSource.getDirectoryScanner(getProject()); + dsSource.scan(); + compareFiles(dsSource, sortedDestinationFiles, sortedDestinationDirectories); + } public void testAllowSymlinks() { if (!supportsSymlinks) { return; @@ -501,7 +523,7 @@ } - private void compareFiles(FTP.FTPDirectoryScanner ds, String[] expectedFiles, + private void compareFiles(DirectoryScanner ds, String[] expectedFiles, String[] expectedDirectories) { String includedFiles[] = ds.getIncludedFiles(); String includedDirectories[] = ds.getIncludedDirectories(); @@ -510,30 +532,20 @@ assertEquals("directories present: ", expectedDirectories.length, includedDirectories.length); - TreeSet files = new TreeSet(); for (int counter=0; counter < includedFiles.length; counter++) { - files.add(includedFiles[counter].replace(File.separatorChar, '/')); + includedFiles[counter] = includedFiles[counter].replace(File.separatorChar, '/'); } - TreeSet directories = new TreeSet(); + Arrays.sort(includedFiles); for (int counter=0; counter < includedDirectories.length; counter++) { - directories.add(includedDirectories[counter] - .replace(File.separatorChar, '/')); + includedDirectories[counter] = includedDirectories[counter] + .replace(File.separatorChar, '/'); } - - String currentfile; - Iterator i = files.iterator(); - int counter = 0; - while (i.hasNext()) { - currentfile = (String) i.next(); - assertEquals(expectedFiles[counter], currentfile); - counter++; - } - String currentdirectory; - Iterator dirit = directories.iterator(); - counter = 0; - while (dirit.hasNext()) { - currentdirectory = (String) dirit.next(); - assertEquals(expectedDirectories[counter], currentdirectory); + Arrays.sort(includedDirectories); + for (int counter=0; counter < includedFiles.length; counter++) { + assertEquals(expectedFiles[counter], includedFiles[counter]); + } + for (int counter=0; counter < includedDirectories.length; counter++) { + assertEquals(expectedDirectories[counter], includedDirectories[counter]); counter++; } } 1.44 +5 -0 ant/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java Index: FTP.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java,v retrieving revision 1.43 retrieving revision 1.44 diff -u -r1.43 -r1.44 --- FTP.java 6 Aug 2003 10:58:24 -0000 1.43 +++ FTP.java 6 Aug 2003 12:24:42 -0000 1.44 @@ -667,6 +667,11 @@ if (action == SEND_FILES) { ds = fs.getDirectoryScanner(getProject()); } else { + // warn that selectors are not supported + if (fs.getSelectors(getProject()).length != 0) { + getProject().log("selectors are not supported in remote filesets", + Project.MSG_WARN); + } ds = new FTPDirectoryScanner(ftp); fs.setupDirectoryScanner(ds, getProject()); ds.scan(); 1.3 +22 -0 ant/src/etc/testcases/taskdefs/optional/net/ftp.xml Index: ftp.xml =================================================================== RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/optional/net/ftp.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ftp.xml 6 Aug 2003 10:27:15 -0000 1.2 +++ ftp.xml 6 Aug 2003 12:24:42 -0000 1.3 @@ -6,18 +6,40 @@ <property name="ftp.port" value="21" /> <property name="ftp.password" value="sunshine" /> <property name="tmp.dir" location="tmp"/> + <property name="tmp.get.dir" location="tmp.get"/> <property name="ftp.filesep" value="/"/> + <fileset dir="${tmp.get.dir}" id="fileset-destination-with-selector"> + <include name="alpha/**"/> + <filename name="**/alpha.xml" /> + </fileset> + <fileset dir="${tmp.dir}" id="fileset-source-without-selector"> + <include name="alpha/**"/> + </fileset> + <fileset dir="${tmp.get.dir}" id="fileset-destination-without-selector"> + <include name="alpha/**"/> + </fileset> <target name="setup"> + <mkdir dir="${tmp.get.dir}"/> <mkdir dir="${tmp.dir}/alpha/beta/gamma"/> <touch file="${tmp.dir}/alpha/beta/gamma/gamma.xml"/> <touch file="${tmp.dir}/alpha/beta/beta.xml"/> </target> + <target name="ftp-get-with-selector"> + <ftp action="get" + server="${ftp.host}" + userid="${ftp.user}" + password="${ftp.password}" + remotedir="${tmp.dir}"> + <fileset refid="fileset-destination-with-selector"/> + </ftp> + </target> <target name="children-of-excluded-dir-setup" depends="setup"> <mkdir dir="${tmp.dir}/delta"/> <touch file="${tmp.dir}/delta/delta.xml"/> </target> <target name="cleanup"> <delete dir="${tmp.dir}" quiet="true"/> + <delete dir="${tmp.get.dir}" quiet="true"/> </target> <target name="symlink-setup" depends="setup"> <mkdir dir="${tmp.dir}/epsilon/gamma"/>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]