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]

Reply via email to