You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2005/10/06 05:52:00 UTC

svn commit: r306521 - in /ant/core/trunk: docs/manual/CoreTasks/ src/etc/testcases/taskdefs/ src/main/org/apache/tools/ant/taskdefs/ src/testcases/org/apache/tools/ant/taskdefs/

Author: bodewig
Date: Wed Oct  5 20:51:48 2005
New Revision: 306521

URL: http://svn.apache.org/viewcvs?rev=306521&view=rev
Log:
<copy> and <sync> can now work on non-filesystem resources as well

Modified:
    ant/core/trunk/docs/manual/CoreTasks/copy.html
    ant/core/trunk/docs/manual/CoreTasks/sync.html
    ant/core/trunk/src/etc/testcases/taskdefs/copy.xml
    ant/core/trunk/src/etc/testcases/taskdefs/sync.xml
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Copy.java
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Sync.java
    ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java
    ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/SyncTest.java

Modified: ant/core/trunk/docs/manual/CoreTasks/copy.html
URL: http://svn.apache.org/viewcvs/ant/core/trunk/docs/manual/CoreTasks/copy.html?rev=306521&r1=306520&r2=306521&view=diff
==============================================================================
--- ant/core/trunk/docs/manual/CoreTasks/copy.html (original)
+++ ant/core/trunk/docs/manual/CoreTasks/copy.html Wed Oct  5 20:51:48 2005
@@ -16,12 +16,8 @@
 overwrite files with the <code>overwrite</code> attribute.</p>
 
 <p><a href="../CoreTypes/resources.html#collection">Resource
-Collection</a>s are used to select a group of files to copy.  Only
-file system based resource collections are supported, this includes <a
-href="../CoreTypes/fileset.html">fileset</a>s, <a
-href="../CoreTypes/filelist.html">filelist</a> and <a
-href="../using.html#path">path</a>.  To use a resource collection, the
-<code>todir</code> attribute must be set.</p>
+Collection</a>s are used to select a group of files to copy.  To use a
+resource collection, the <code>todir</code> attribute must be set.</p>
 
 <p>
 <strong>Note: </strong>If you employ filters in your copy operation, you should 
@@ -144,7 +140,7 @@
 </table>
 <h3>Parameters specified as nested elements</h3>
 
-<h4>fileset or any other filesystem based resource collection</h4>
+<h4>fileset or any other resource collection</h4>
 <p><a href="../CoreTypes/resources.html#collection">Resource
 Collection</a>s are used to select groups of files to copy.  To use a
 resource collection, the <code>todir</code> attribute must be set.</p>

Modified: ant/core/trunk/docs/manual/CoreTasks/sync.html
URL: http://svn.apache.org/viewcvs/ant/core/trunk/docs/manual/CoreTasks/sync.html?rev=306521&r1=306520&r2=306521&view=diff
==============================================================================
--- ant/core/trunk/docs/manual/CoreTasks/sync.html (original)
+++ ant/core/trunk/docs/manual/CoreTasks/sync.html Wed Oct  5 20:51:48 2005
@@ -13,10 +13,10 @@
 <h3>Description</h3>
 
 <p>Synchronize a target directory from the files defined in one or
-more filesystem based <a href="../CoreTypes/resources.html#collection">Resource Collection</a>s.</p>
+more <a href="../CoreTypes/resources.html#collection">Resource Collection</a>s.</p>
 
 <p>Any file in the target directory that has not been matched by at
-least one of the nested resource collection gets removed.  I.e. if you exclude a
+least one of the nested resource collections gets removed.  I.e. if you exclude a
 file in your sources and a file of that name is present in the target
 dir, it will get removed from the target.</p>
 
@@ -72,7 +72,7 @@
 
 <h3>Parameters specified as nested elements</h3>
 
-<h4>fileset or any other filesystem based resource collection</h4>
+<h4>fileset or any other resource collection</h4>
 <p><a href="../CoreTypes/resources.html#collection">Resource
 Collection</a>s are used to select groups of files to copy.  To use a
 resource collection, the <code>todir</code> attribute must be set.</p>

Modified: ant/core/trunk/src/etc/testcases/taskdefs/copy.xml
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/etc/testcases/taskdefs/copy.xml?rev=306521&r1=306520&r2=306521&view=diff
==============================================================================
--- ant/core/trunk/src/etc/testcases/taskdefs/copy.xml (original)
+++ ant/core/trunk/src/etc/testcases/taskdefs/copy.xml Wed Oct  5 20:51:48 2005
@@ -197,7 +197,14 @@
     </copy>     
   </target>
         
-        
+  <target name="testZipfileset" depends="testResource.prepare">
+    <zip destfile="${from.dir}/test.zip" roundup="false">
+      <fileset dir="${from.dir}" excludes="*.zip"/>
+    </zip>
+    <copy todir="${to.dir}">
+      <zipfileset src="${from.dir}/test.zip"/>
+    </copy>
+  </target>
   
   <target name="cleanup"> 
     <delete file="copytest1.tmp"/>

Modified: ant/core/trunk/src/etc/testcases/taskdefs/sync.xml
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/etc/testcases/taskdefs/sync.xml?rev=306521&r1=306520&r2=306521&view=diff
==============================================================================
--- ant/core/trunk/src/etc/testcases/taskdefs/sync.xml (original)
+++ ant/core/trunk/src/etc/testcases/taskdefs/sync.xml Wed Oct  5 20:51:48 2005
@@ -48,6 +48,19 @@
     </sync>
   </target>
 
+  <target name="copyandremove-with-zipfileset" depends="setup">
+    <mkdir dir="${src}/a/b/c"/>
+    <touch file="${src}/a/b/c/d"/>
+    <mkdir dir="${dest}/e"/>
+    <touch file="${dest}/e/f"/>
+    <zip destfile="${src}/test.zip">
+      <fileset dir="${src}" excludes="*.zip"/>
+    </zip>
+    <sync todir="${dest}">
+      <zipfileset src="${src}/test.zip"/>
+    </sync>
+  </target>
+
   <target name="copyandremove-emptypreserve" depends="setup">
     <mkdir dir="${src}/a/b/c"/>
     <touch file="${src}/a/b/c/d"/>

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Copy.java
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Copy.java?rev=306521&r1=306520&r2=306521&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Copy.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Copy.java Wed Oct  5 20:51:48 2005
@@ -39,10 +39,12 @@
 import org.apache.tools.ant.types.FilterSetCollection;
 import org.apache.tools.ant.types.Resource;
 import org.apache.tools.ant.types.ResourceCollection;
+import org.apache.tools.ant.types.ResourceFactory;
 import org.apache.tools.ant.types.resources.FileResource;
 import org.apache.tools.ant.util.FileUtils;
 import org.apache.tools.ant.util.FileNameMapper;
 import org.apache.tools.ant.util.IdentityMapper;
+import org.apache.tools.ant.util.ResourceUtils;
 import org.apache.tools.ant.util.SourceFileScanner;
 import org.apache.tools.ant.util.FlatFileNameMapper;
 
@@ -435,76 +437,94 @@
             HashMap filesByBasedir = new HashMap();
             HashMap dirsByBasedir = new HashMap();
             HashSet baseDirs = new HashSet();
+            ArrayList nonFileResources = new ArrayList();
             for (int i = 0; i < rcs.size(); i++) {
                 ResourceCollection rc = (ResourceCollection) rcs.elementAt(i);
 
-                if (rc.isFilesystemOnly()) {
+                // Step (1) - beware of the ZipFileSet
+                if (rc instanceof FileSet && rc.isFilesystemOnly()) {
+                    FileSet fs = (FileSet) rc;
+                    DirectoryScanner ds = null;
+                    try {
+                        ds = fs.getDirectoryScanner(getProject());
+                    } catch (BuildException e) {
+                        if (failonerror
+                            || !e.getMessage().endsWith(" not found.")) {
+                            throw e;
+                        } else {
+                            log("Warning: " + e.getMessage());
+                            continue;
+                        }
+                    }
+                    File fromDir = fs.getDir(getProject());
 
-                    // Step (1)
-                    if (rc instanceof FileSet) {
-                        FileSet fs = (FileSet) rc;
-                        DirectoryScanner ds = null;
-                        try {
-                            ds = fs.getDirectoryScanner(getProject());
-                        } catch (BuildException e) {
-                            if (failonerror
-                                || !e.getMessage().endsWith(" not found.")) {
-                                throw e;
-                            } else {
-                                log("Warning: " + e.getMessage());
-                                continue;
-                            }
+                    String[] srcFiles = ds.getIncludedFiles();
+                    String[] srcDirs = ds.getIncludedDirectories();
+                    if (!flatten && mapperElement == null
+                        && ds.isEverythingIncluded() && !fs.hasPatterns()) {
+                        completeDirMap.put(fromDir, destDir);
+                    }
+                    add(fromDir, srcFiles, filesByBasedir);
+                    add(fromDir, srcDirs, dirsByBasedir);
+                    baseDirs.add(fromDir);
+                } else { // not a fileset or contains non-file resources
+
+                    if (!rc.isFilesystemOnly() && !supportsNonFileResources()) {
+                        throw new BuildException(
+                                   "Only FileSystem resources are supported.");
+                    }
+
+                    Iterator resources = rc.iterator();
+                    while (resources.hasNext()) {
+                        Resource r = (Resource) resources.next();
+                        if (!r.isExists()) {
+                            continue;
                         }
-                        File fromDir = fs.getDir(getProject());
 
-                        String[] srcFiles = ds.getIncludedFiles();
-                        String[] srcDirs = ds.getIncludedDirectories();
-                        if (!flatten && mapperElement == null
-                            && ds.isEverythingIncluded() && !fs.hasPatterns()) {
-                            completeDirMap.put(fromDir, destDir);
-                        }
-                        add(fromDir, srcFiles, filesByBasedir);
-                        add(fromDir, srcDirs, dirsByBasedir);
-                        baseDirs.add(fromDir);
-                    } else { // not a fileset
-
-                        Iterator resources = rc.iterator();
-                        while (resources.hasNext()) {
-                            FileResource fr = (FileResource) resources.next();
-                            if (!fr.isExists()) {
-                                continue;
+                        File baseDir = NULL_FILE_PLACEHOLDER;
+                        String name = r.getName();
+                        if (r instanceof FileResource) {
+                            FileResource fr = (FileResource) r;
+                            baseDir = getKeyFile(fr.getBaseDir());
+                            if (fr.getBaseDir() == null) {
+                                name = fr.getFile().getAbsolutePath();
                             }
-                            File baseDir = getKeyFile(fr.getBaseDir());
-                            add(baseDir, baseDir == NULL_FILE_PLACEHOLDER
-                                ? fr.getFile().getAbsolutePath() : fr.getName(),
-                                fr.isDirectory() ? dirsByBasedir
-                                                 : filesByBasedir);
-                            baseDirs.add(baseDir);
                         }
-                    }
 
-                    Iterator iter = baseDirs.iterator();
-                    while (iter.hasNext()) {
-                        File f = (File) iter.next();
-                        List files = (List) filesByBasedir.get(f);
-                        List dirs = (List) dirsByBasedir.get(f);
-
-                        String[] srcFiles = new String[0];
-                        if (files != null) {
-                            srcFiles = (String[]) files.toArray(srcFiles);
-                        }
-                        String[] srcDirs = new String[0];
-                        if (dirs != null) {
-                            srcDirs = (String[]) dirs.toArray(srcDirs);
+                        // copying of dirs is trivial and can be done
+                        // for non-file resources as well as for real
+                        // files.
+                        if (r.isDirectory() || r instanceof FileResource) {
+                            add(baseDir, name,
+                                r.isDirectory() ? dirsByBasedir 
+                                                : filesByBasedir);
+                            baseDirs.add(baseDir);
+                        } else { // a not-directory file resource
+                            // needs special treatment
+                            nonFileResources.add(r);
                         }
-                        scan(f == NULL_FILE_PLACEHOLDER ? null : f, destDir,
-                             srcFiles, srcDirs);
                     }
-                } else { // not a File resource collection
-                    throw new BuildException(
-                        "Only FileSystem resources are supported.");
                 }
             }
+
+            Iterator iter = baseDirs.iterator();
+            while (iter.hasNext()) {
+                File f = (File) iter.next();
+                List files = (List) filesByBasedir.get(f);
+                List dirs = (List) dirsByBasedir.get(f);
+
+                String[] srcFiles = new String[0];
+                if (files != null) {
+                    srcFiles = (String[]) files.toArray(srcFiles);
+                }
+                String[] srcDirs = new String[0];
+                if (dirs != null) {
+                    srcDirs = (String[]) dirs.toArray(srcDirs);
+                }
+                scan(f == NULL_FILE_PLACEHOLDER ? null : f, destDir, srcFiles,
+                     srcDirs);
+            }
+
             // do all the copy operations now...
             try {
                 doFileOperations();
@@ -515,6 +535,22 @@
                     throw e;
                 }
             }
+
+            if (nonFileResources.size() > 0) {
+                Resource[] nonFiles =
+                    (Resource[]) nonFileResources.toArray(new Resource[0]);
+                // restrict to out-of-date resources
+                Map map = scan(nonFiles, destDir);
+                try {
+                    doResourceOperations(map);
+                } catch (BuildException e) {
+                    if (!failonerror) {
+                        log("Warning: " + e.getMessage(), Project.MSG_ERR);
+                    } else {
+                        throw e;
+                    }
+                }
+            }
         } finally {
             // clean up again, so this instance can be used a second
             // time
@@ -563,7 +599,8 @@
                 ResourceCollection rc = (ResourceCollection) rcs.elementAt(0);
                 if (!rc.isFilesystemOnly()) {
                     throw new BuildException("Only FileSystem resources are"
-                                             + " supported.");
+                                             + " supported when concatenating"
+                                             + " files.");
                 }
                 if (rc.size() == 0) {
                     throw new BuildException(
@@ -599,14 +636,7 @@
      */
     protected void scan(File fromDir, File toDir, String[] files,
                         String[] dirs) {
-        FileNameMapper mapper = null;
-        if (mapperElement != null) {
-            mapper = mapperElement.getImplementation();
-        } else if (flatten) {
-            mapper = new FlatFileNameMapper();
-        } else {
-            mapper = new IdentityMapper();
-        }
+        FileNameMapper mapper = getMapper();
         buildMap(fromDir, toDir, files, mapper, fileCopyMap);
 
         if (includeEmpty) {
@@ -615,6 +645,22 @@
     }
 
     /**
+     * Compares source resources to destination files to see if they
+     * should be copied.
+     *
+     * @param fromResources  The source resources.
+     * @param toDir          The destination directory.
+     *
+     * @return a Map with the out-of-date resources as keys and an
+     * array of target file names as values.
+     *
+     * @since Ant 1.7
+     */
+    protected Map scan(Resource[] fromResources, File toDir) {
+        return buildMap(fromResources, toDir, getMapper());
+    }
+
+    /**
      * Add to a map of files/directories to copy.
      *
      * @param fromDir the source directory.
@@ -641,7 +687,6 @@
         }
         for (int i = 0; i < toCopy.length; i++) {
             File src = new File(fromDir, toCopy[i]);
-
             String[] mappedFiles = mapper.mapFileName(toCopy[i]);
 
             if (!enableMultipleMappings) {
@@ -658,6 +703,56 @@
     }
 
     /**
+     * Create a map of resources to copy.
+     *
+     * @param fromResources  The source resources.
+     * @param toDir   the destination directory.
+     * @param mapper  a <code>FileNameMapper</code> value.
+     * @return a map of source resource to array of destination files.
+     * @since Ant 1.7
+     */
+    protected Map buildMap(Resource[] fromResources, final File toDir,
+                           FileNameMapper mapper) {
+        HashMap map = new HashMap();
+        Resource[] toCopy = null;
+        if (forceOverwrite) {
+            Vector v = new Vector();
+            for (int i = 0; i < fromResources.length; i++) {
+                if (mapper.mapFileName(fromResources[i].getName()) != null) {
+                    v.addElement(fromResources[i]);
+                }
+            }
+            toCopy = new Resource[v.size()];
+            v.copyInto(toCopy);
+        } else {
+            toCopy =
+                ResourceUtils.selectOutOfDateSources(this, fromResources,
+                                                     mapper,
+                                                     new ResourceFactory() {
+                           public Resource getResource(String name) {
+                               return new FileResource(toDir, name);
+                           }
+                                                     },
+                                                     granularity);
+        }
+        for (int i = 0; i < toCopy.length; i++) {
+            String[] mappedFiles = mapper.mapFileName(toCopy[i].getName());
+
+            if (!enableMultipleMappings) {
+                map.put(toCopy[i],
+                        new String[] {new File(toDir, mappedFiles[0]).getAbsolutePath()});
+            } else {
+                // reuse the array created by the mapper
+                for (int k = 0; k < mappedFiles.length; k++) {
+                    mappedFiles[k] = new File(toDir, mappedFiles[k]).getAbsolutePath();
+                }
+                map.put(toCopy[i], mappedFiles);
+            }
+        }
+        return map;
+    }
+
+    /**
      * Actually does the file (and possibly empty directory) copies.
      * This is a good method for subclasses to override.
      */
@@ -739,6 +834,84 @@
     }
 
     /**
+     * Actually does the resource copies.
+     * This is a good method for subclasses to override.
+     * @param map a map of source resource to array of destination files.
+     * @since Ant 1.7
+     */
+    protected void doResourceOperations(Map map) {
+        if (map.size() > 0) {
+            log("Copying " + map.size()
+                + " resource" + (map.size() == 1 ? "" : "s")
+                + " to " + destDir.getAbsolutePath());
+
+            Iterator iter = map.keySet().iterator();
+            while (iter.hasNext()) {
+                Resource fromResource = (Resource) iter.next();
+                String[] toFiles = (String[]) map.get(fromResource);
+
+                for (int i = 0; i < toFiles.length; i++) {
+                    String toFile = toFiles[i];
+
+                    try {
+                        log("Copying " + fromResource + " to " + toFile,
+                            verbosity);
+
+                        FilterSetCollection executionFilters =
+                            new FilterSetCollection();
+                        if (filtering) {
+                            executionFilters
+                                .addFilterSet(getProject().getGlobalFilterSet());
+                        }
+                        for (Enumeration filterEnum = filterSets.elements();
+                            filterEnum.hasMoreElements();) {
+                            executionFilters
+                                .addFilterSet((FilterSet) filterEnum.nextElement());
+                        }
+                        ResourceUtils.copyResource(fromResource,
+                                                   new FileResource(destDir,
+                                                                    toFile),
+                                                   executionFilters,
+                                                   filterChains,
+                                                   forceOverwrite,
+                                                   preserveLastModified,
+                                                   inputEncoding,
+                                                   outputEncoding,
+                                                   getProject());
+                    } catch (IOException ioe) {
+                        String msg = "Failed to copy " + fromResource
+                            + " to " + toFile
+                            + " due to " + ioe.getMessage();
+                        File targetFile = new File(toFile);
+                        if (targetFile.exists() && !targetFile.delete()) {
+                            msg += " and I couldn't delete the corrupt " + toFile;
+                        }
+                        throw new BuildException(msg, ioe, getLocation());
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Whether this task can deal with non-file resources.
+     *
+     * <p>&lt;copy&gt; can while &lt;move&gt; can't since we don't
+     * know how to remove non-file resources.</p>
+     *
+     * <p>This implementation returns true only if this task is
+     * &lt;copy&gt;.  Any subclass of this class that also wants to
+     * support non-file resources needs to override this method.  We
+     * need to do so for backwards compatibility reasons since we
+     * can't expect subclasses to support resources.</p>
+     *
+     * @since Ant 1.7
+     */
+    protected boolean supportsNonFileResources() {
+        return getClass().equals(Copy.class);
+    }
+
+    /**
      * Adds the given strings to a list contained in the given map.
      * The file is the key into the map.
      */
@@ -770,4 +943,21 @@
     private static File getKeyFile(File f) {
         return f == null ? NULL_FILE_PLACEHOLDER : f;
     }
+
+    /**
+     * returns the mapper to use based on nested elements or the
+     * flatten attribute.
+     */
+    private FileNameMapper getMapper() {
+        FileNameMapper mapper = null;
+        if (mapperElement != null) {
+            mapper = mapperElement.getImplementation();
+        } else if (flatten) {
+            mapper = new FlatFileNameMapper();
+        } else {
+            mapper = new IdentityMapper();
+        }
+        return mapper;
+    }
+
 }

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Sync.java
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Sync.java?rev=306521&r1=306520&r2=306521&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Sync.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Sync.java Wed Oct  5 20:51:48 2005
@@ -26,6 +26,8 @@
 import java.io.File;
 
 import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
 import java.util.Set;
 
 import org.apache.tools.ant.BuildException;
@@ -35,6 +37,7 @@
 import org.apache.tools.ant.types.AbstractFileSet;
 import org.apache.tools.ant.types.FileSet;
 import org.apache.tools.ant.types.PatternSet;
+import org.apache.tools.ant.types.Resource;
 import org.apache.tools.ant.types.ResourceCollection;
 import org.apache.tools.ant.types.selectors.FileSelector;
 import org.apache.tools.ant.types.selectors.NoneSelector;
@@ -385,6 +388,21 @@
         }
 
         /**
+         * @see Copy#scan(Resource[], File)
+         */
+        protected Map scan(Resource[] resources, File toDir) {
+            assertTrue("No mapper", mapperElement == null);
+
+            Map m = super.scan(resources, toDir);
+
+            Iterator iter = m.keySet().iterator();
+            while (iter.hasNext()) {
+                nonOrphans.add(((Resource) iter.next()).getName());
+            }
+            return m;
+        }
+
+        /**
          * Get the destination directory.
          * @return the destination directory
          */
@@ -400,6 +418,13 @@
             return includeEmpty;
         }
 
+        /**
+         * Yes, we can.
+         * @since Ant 1.7
+         */
+        protected boolean supportsNonFileResources() {
+            return true;
+        }
     }
 
     /**

Modified: ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java?rev=306521&r1=306520&r2=306521&view=diff
==============================================================================
--- ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java (original)
+++ ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/CopyTest.java Wed Oct  5 20:51:48 2005
@@ -197,6 +197,16 @@
         assertTrue(file3.exists());
     }
     
+    public void testZipfileset() {
+        executeTarget("testZipfileset");
+        File file1 = new File(getProjectDir(), getProject().getProperty("to.dir")+"/file1.txt");
+        File file2 = new File(getProjectDir(), getProject().getProperty("to.dir")+"/file2.txt");
+        File file3 = new File(getProjectDir(), getProject().getProperty("to.dir")+"/file3.txt");
+        assertTrue(file1.exists());
+        assertTrue(file2.exists());
+        assertTrue(file3.exists());
+    }
+    
     public void _testResourcePlain() {
         executeTarget("testResourcePlain");
     }

Modified: ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/SyncTest.java
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/SyncTest.java?rev=306521&r1=306520&r2=306521&view=diff
==============================================================================
--- ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/SyncTest.java (original)
+++ ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/SyncTest.java Wed Oct  5 20:51:48 2005
@@ -67,6 +67,10 @@
         testCopyAndRemove("copyandremove-with-filelist");
     }
 
+    public void testCopyAndRemoveWithZipfileset() {
+        testCopyAndRemove("copyandremove-with-zipfileset");
+    }
+
     private void testCopyAndRemove(String target) {
         executeTarget(target);
         String d = getProject().getProperty("dest") + "/a/b/c/d";



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org


Re: svn commit: r306521 - in /ant/core/trunk: docs/manual/CoreTasks/ src/etc/testcases/taskdefs/ src/main/org/apache/tools/ant/taskdefs/ src/testcases/org/apache/tools/ant/taskdefs/

Posted by Stefan Bodewig <bo...@apache.org>.
On Thu, 6 Oct 2005, Matt Benson <gu...@yahoo.com> wrote:

> I'm in my first week at a new job so my time will be a little
> compromised just yet (I'll still be in the picture though).

I know exactly what you are talking about (still haven't fully
recovered nine weeks after switching jobs).

Good luck

     Stefan

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org


Re: svn commit: r306521 - in /ant/core/trunk: docs/manual/CoreTasks/ src/etc/testcases/taskdefs/ src/main/org/apache/tools/ant/taskdefs/ src/testcases/org/apache/tools/ant/taskdefs/

Posted by Matt Benson <gu...@yahoo.com>.
--- bodewig@apache.org wrote:

> Author: bodewig
> Date: Wed Oct  5 20:51:48 2005
> New Revision: 306521
> 
> URL:
> http://svn.apache.org/viewcvs?rev=306521&view=rev
> Log:
> <copy> and <sync> can now work on non-filesystem
> resources as well

My proverbial hat is off, off, off!  I'm in my first
week at a new job so my time will be a little
compromised just yet (I'll still be in the picture
though).

-Matt


		
__________________________________ 
Yahoo! Mail - PC Magazine Editors' Choice 2005 
http://mail.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org