ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bode...@apache.org
Subject cvs commit: jakarta-ant/src/testcases/org/apache/tools/ant/types AbstractFileSetTest.java DirSetTest.java FileSetTest.java
Date Mon, 08 Apr 2002 14:25:19 GMT
bodewig     02/04/08 07:25:19

  Modified:    .        build.xml
               src/main/org/apache/tools/ant/types DirSet.java FileSet.java
               src/testcases/org/apache/tools/ant/types DirSetTest.java
                        FileSetTest.java
  Added:       src/main/org/apache/tools/ant/types AbstractFileSet.java
               src/testcases/org/apache/tools/ant/types
                        AbstractFileSetTest.java
  Log:
  rework inheritance tree for DirSet and FileSet, they are not
  interchangeable.
  
  Revision  Changes    Path
  1.286     +1 -0      jakarta-ant/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/build.xml,v
  retrieving revision 1.285
  retrieving revision 1.286
  diff -u -r1.285 -r1.286
  --- build.xml	6 Apr 2002 01:32:22 -0000	1.285
  +++ build.xml	8 Apr 2002 14:25:18 -0000	1.286
  @@ -1168,6 +1168,7 @@
             <exclude name="${regexp.package}/RegexpMatcherTest.java" />
             <exclude name="${regexp.package}/RegexpTest.java" />
             <exclude name="${optional.package}/AbstractXSLTLiaisonTest.java" />
  +          <exclude name="${ant.package}/types/AbstractFileSetTest.java" />
             
             <!-- helper classes, not testcases -->
             <exclude name="org/example/**" />
  
  
  
  1.5       +5 -3      jakarta-ant/src/main/org/apache/tools/ant/types/DirSet.java
  
  Index: DirSet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/types/DirSet.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DirSet.java	3 Apr 2002 11:38:33 -0000	1.4
  +++ DirSet.java	8 Apr 2002 14:25:18 -0000	1.5
  @@ -60,16 +60,18 @@
    *
    * @since Ant 1.5
    */
  -public class DirSet extends FileSet {
  +public class DirSet extends AbstractFileSet {
       
       public DirSet() {
           super();
  -        setDataTypeName("dirset");
       }
   
       protected DirSet(DirSet dirset) {
           super(dirset);
  -        setDataTypeName("dirset");
  +    }
  +
  +    protected String getDataTypeName() {
  +        return "dirset";
       }
   
       /**
  
  
  
  1.27      +5 -261    jakarta-ant/src/main/org/apache/tools/ant/types/FileSet.java
  
  Index: FileSet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/types/FileSet.java,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- FileSet.java	4 Apr 2002 14:00:29 -0000	1.26
  +++ FileSet.java	8 Apr 2002 14:25:18 -0000	1.27
  @@ -54,15 +54,6 @@
   
   package org.apache.tools.ant.types;
   
  -import org.apache.tools.ant.BuildException;
  -import org.apache.tools.ant.FileScanner;
  -import org.apache.tools.ant.DirectoryScanner;
  -import org.apache.tools.ant.Project;
  -
  -import java.io.File;
  -import java.util.Stack;
  -import java.util.Vector;
  -
   /**
    * Moved out of MatchingTask to make it a standalone object that could
    * be referenced (by scripts for example).
  @@ -74,265 +65,18 @@
    * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
    * @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a>
    */
  -public class FileSet extends DataType implements Cloneable {
  +public class FileSet extends AbstractFileSet {
       
  -    private PatternSet defaultPatterns = new PatternSet();
  -    private Vector additionalPatterns = new Vector();
  -
  -    private File dir;
  -    private boolean useDefaultExcludes = true;
  -    private boolean isCaseSensitive = true;
  -
  -    private String dataTypeName = "fileset";
  -
       public FileSet() {
           super();
       }
   
       protected FileSet(FileSet fileset) {
  -        this.dir = fileset.dir;
  -        this.defaultPatterns = fileset.defaultPatterns;
  -        this.additionalPatterns = fileset.additionalPatterns;
  -        this.useDefaultExcludes = fileset.useDefaultExcludes;
  -        this.isCaseSensitive = fileset.isCaseSensitive;
  -        setProject(getProject());
  -    }
  -
  -    /**
  -     * Makes this instance in effect a reference to another PatternSet
  -     * instance.
  -     *
  -     * <p>You must not set another attribute or nest elements inside
  -     * this element if you make it a reference.</p> 
  -     */
  -    public void setRefid(Reference r) throws BuildException {
  -        if (dir != null || defaultPatterns.hasPatterns()) {
  -            throw tooManyAttributes();
  -        }
  -        if (!additionalPatterns.isEmpty()) {
  -            throw noChildrenAllowed();
  -        }
  -        super.setRefid(r);
  -    }
  -
  -    public void setDir(File dir) throws BuildException {
  -        if (isReference()) {
  -            throw tooManyAttributes();
  -        }
  -
  -        this.dir = dir;
  -    }
  -
  -    public File getDir(Project p) {
  -        if (isReference()) {
  -            return getRef(p).getDir(p);
  -        }
  -        return dir;
  -    }
  -
  -    public PatternSet createPatternSet() {
  -        if (isReference()) {
  -            throw noChildrenAllowed();
  -        }
  -        PatternSet patterns = new PatternSet();
  -        additionalPatterns.addElement(patterns);
  -        return patterns;
  -    }
  -
  -    /**
  -     * add a name entry on the include list
  -     */
  -    public PatternSet.NameEntry createInclude() {
  -        if (isReference()) {
  -            throw noChildrenAllowed();
  -        }
  -        return defaultPatterns.createInclude();
  -    }
  -    
  -    /**
  -     * add a name entry on the include files list
  -     */
  -    public PatternSet.NameEntry createIncludesFile() {
  -        if (isReference()) {
  -            throw noChildrenAllowed();
  -        }
  -        return defaultPatterns.createIncludesFile();
  -    }
  -    
  -    /**
  -     * add a name entry on the exclude list
  -     */
  -    public PatternSet.NameEntry createExclude() {
  -        if (isReference()) {
  -            throw noChildrenAllowed();
  -        }
  -        return defaultPatterns.createExclude();
  +        super(fileset);
       }
   
  -    /**
  -     * add a name entry on the include files list
  -     */
  -    public PatternSet.NameEntry createExcludesFile() {
  -        if (isReference()) {
  -            throw noChildrenAllowed();
  -        }
  -        return defaultPatterns.createExcludesFile();
  -    }
  -    
  -    /**
  -     * Appends <code>includes</code> to the current list of include patterns.

  -     * Patterns may be separated by a comma or a space.
  -     *
  -     * @param includes the string containing the include patterns
  -     */
  -    public void setIncludes(String includes) {
  -        if (isReference()) {
  -            throw tooManyAttributes();
  -        }
  -
  -        defaultPatterns.setIncludes(includes);
  -    }
  -
  -    /**
  -     * Appends <code>excludes</code> to the current list of exclude patterns.

  -     * Patterns may be separated by a comma or a space.
  -     *
  -     * @param excludes the string containing the exclude patterns
  -     */
  -    public void setExcludes(String excludes) {
  -        if (isReference()) {
  -            throw tooManyAttributes();
  -        }
  -
  -        defaultPatterns.setExcludes(excludes);
  -    }
  -
  -    /**
  -     * Sets the name of the file containing the includes patterns.
  -     *
  -     * @param incl The file to fetch the include patterns from.  
  -     */
  -     public void setIncludesfile(File incl) throws BuildException {
  -         if (isReference()) {
  -             throw tooManyAttributes();
  -         }
  -
  -         defaultPatterns.setIncludesfile(incl);
  -     }
  -
  -    /**
  -     * Sets the name of the file containing the includes patterns.
  -     *
  -     * @param excl The file to fetch the exclude patterns from.  
  -     */
  -     public void setExcludesfile(File excl) throws BuildException {
  -         if (isReference()) {
  -             throw tooManyAttributes();
  -         }
  -
  -         defaultPatterns.setExcludesfile(excl);
  -     }
  -
  -    /**
  -     * Sets whether default exclusions should be used or not.
  -     *
  -     * @param useDefaultExcludes "true"|"on"|"yes" when default exclusions 
  -     *                           should be used, "false"|"off"|"no" when they
  -     *                           shouldn't be used.
  -     */
  -    public void setDefaultexcludes(boolean useDefaultExcludes) {
  -        if (isReference()) {
  -            throw tooManyAttributes();
  -        }
  -
  -        this.useDefaultExcludes = useDefaultExcludes;
  -    }
  -
  -    /**
  -     * Sets case sensitivity of the file system
  -     *
  -     * @param isCaseSensitive "true"|"on"|"yes" if file system is case
  -     *                           sensitive, "false"|"off"|"no" when not.
  -     */
  -    public void setCaseSensitive(boolean isCaseSensitive) {
  -        this.isCaseSensitive = isCaseSensitive;
  -    }
  -
  -    /**
  -     * sets the name used for this datatype instance.
  -     */
  -    protected final void setDataTypeName(String name) {
  -        dataTypeName = name;
  -    }
  -
  -    /**
  -     * Returns the directory scanner needed to access the files to process.
  -     */
  -    public DirectoryScanner getDirectoryScanner(Project p) {
  -        if (isReference()) {
  -            return getRef(p).getDirectoryScanner(p);
  -        }
  -
  -        if (dir == null) {
  -            throw new BuildException("No directory specified for "
  -                                     + dataTypeName + ".");
  -        }
  -
  -        if (!dir.exists()) {
  -            throw new BuildException(dir.getAbsolutePath()+" not found.");
  -        }
  -        if (!dir.isDirectory()) {
  -            throw new BuildException(dir.getAbsolutePath()+" is not a directory.");
  -        }
  -
  -        DirectoryScanner ds = new DirectoryScanner();
  -        setupDirectoryScanner(ds, p);
  -        ds.scan();
  -        return ds;
  -    }
  -    
  -    public void setupDirectoryScanner(FileScanner ds, Project p) {
  -        if (ds == null) {
  -            throw new IllegalArgumentException("ds cannot be null");
  -        }
  -        
  -        ds.setBasedir(dir);
  -
  -        final int count = additionalPatterns.size();
  -        for (int i = 0; i < count; i++) {
  -            Object o = additionalPatterns.elementAt(i);
  -            defaultPatterns.append((PatternSet) o, p);
  -        }
  -
  -        p.log(dataTypeName + ": Setup scanner in dir " + dir + 
  -            " with " + defaultPatterns, Project.MSG_DEBUG );
  -        
  -        ds.setIncludes(defaultPatterns.getIncludePatterns(p));
  -        ds.setExcludes(defaultPatterns.getExcludePatterns(p));
  -        if (useDefaultExcludes) {
  -            ds.addDefaultExcludes();
  -        }
  -        ds.setCaseSensitive(isCaseSensitive);
  -    }
  -
  -    /**
  -     * Performs the check for circular references and returns the
  -     * referenced FileSet.  
  -     */
  -    protected FileSet getRef(Project p) {
  -        if (!checked) {
  -            Stack stk = new Stack();
  -            stk.push(this);
  -            dieOnCircularReference(stk, p);
  -        }
  -        
  -        Object o = ref.getReferencedObject(p);
  -        if (!getClass().isAssignableFrom(o.getClass())) {
  -            String msg = ref.getRefId()+" doesn\'t denote a " + dataTypeName;
  -            throw new BuildException(msg);
  -        } else {
  -            return (FileSet) o;
  -        }
  +    protected String getDataTypeName() {
  +        return "fileset";
       }
   
       /**
  @@ -341,7 +85,7 @@
        */
       public Object clone() {
           if (isReference()) {
  -            return new FileSet(getRef(getProject()));
  +            return new FileSet((FileSet) getRef(getProject()));
           } else {
               return new FileSet(this);
           }
  
  
  
  1.1                  jakarta-ant/src/main/org/apache/tools/ant/types/AbstractFileSet.java
  
  Index: AbstractFileSet.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 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 apache@apache.org.
   *
   * 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.types;
  
  import org.apache.tools.ant.BuildException;
  import org.apache.tools.ant.FileScanner;
  import org.apache.tools.ant.DirectoryScanner;
  import org.apache.tools.ant.Project;
  
  import java.io.File;
  import java.util.Stack;
  import java.util.Vector;
  
  /**
   * Class that holds an implicit patternset and supports nested
   * patternsets and creates a DirectoryScanner using these patterns.
   *
   * <p>Common base class for DirSet and FileSet.</p>
   *
   * @author <a href="mailto:ajkuiper@wxs.nl">Arnout J. Kuiper</a> 
   * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
   * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a>
   * @author <a href="mailto:jon@clearink.com">Jon S. Stevens</a>
   * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
   * @author <a href="mailto:umagesh@rediffmail.com">Magesh Umasankar</a>
   */
  public abstract class AbstractFileSet extends DataType implements Cloneable {
      
      private PatternSet defaultPatterns = new PatternSet();
      private Vector additionalPatterns = new Vector();
  
      private File dir;
      private boolean useDefaultExcludes = true;
      private boolean isCaseSensitive = true;
  
      public AbstractFileSet() {
          super();
      }
  
      protected AbstractFileSet(AbstractFileSet fileset) {
          this.dir = fileset.dir;
          this.defaultPatterns = fileset.defaultPatterns;
          this.additionalPatterns = fileset.additionalPatterns;
          this.useDefaultExcludes = fileset.useDefaultExcludes;
          this.isCaseSensitive = fileset.isCaseSensitive;
          setProject(getProject());
      }
  
      /**
       * Makes this instance in effect a reference to another instance.
       *
       * <p>You must not set another attribute or nest elements inside
       * this element if you make it a reference.</p> 
       */
      public void setRefid(Reference r) throws BuildException {
          if (dir != null || defaultPatterns.hasPatterns()) {
              throw tooManyAttributes();
          }
          if (!additionalPatterns.isEmpty()) {
              throw noChildrenAllowed();
          }
          super.setRefid(r);
      }
  
      /**
       * Sets the base-directory for this instance.
       */
      public void setDir(File dir) throws BuildException {
          if (isReference()) {
              throw tooManyAttributes();
          }
  
          this.dir = dir;
      }
  
      /**
       * Retrieves the base-directory for this instance.
       */
      public File getDir(Project p) {
          if (isReference()) {
              return getRef(p).getDir(p);
          }
          return dir;
      }
  
      /**
       * Creates a nested patternset.
       */
      public PatternSet createPatternSet() {
          if (isReference()) {
              throw noChildrenAllowed();
          }
          PatternSet patterns = new PatternSet();
          additionalPatterns.addElement(patterns);
          return patterns;
      }
  
      /**
       * add a name entry on the include list
       */
      public PatternSet.NameEntry createInclude() {
          if (isReference()) {
              throw noChildrenAllowed();
          }
          return defaultPatterns.createInclude();
      }
      
      /**
       * add a name entry on the include files list
       */
      public PatternSet.NameEntry createIncludesFile() {
          if (isReference()) {
              throw noChildrenAllowed();
          }
          return defaultPatterns.createIncludesFile();
      }
      
      /**
       * add a name entry on the exclude list
       */
      public PatternSet.NameEntry createExclude() {
          if (isReference()) {
              throw noChildrenAllowed();
          }
          return defaultPatterns.createExclude();
      }
  
      /**
       * add a name entry on the include files list
       */
      public PatternSet.NameEntry createExcludesFile() {
          if (isReference()) {
              throw noChildrenAllowed();
          }
          return defaultPatterns.createExcludesFile();
      }
      
      /**
       * Appends <code>includes</code> to the current list of include
       * patterns.
       *
       * <p>Patterns may be separated by a comma or a space.</p>
       *
       * @param includes the string containing the include patterns
       */
      public void setIncludes(String includes) {
          if (isReference()) {
              throw tooManyAttributes();
          }
  
          defaultPatterns.setIncludes(includes);
      }
  
      /**
       * Appends <code>excludes</code> to the current list of exclude
       * patterns.
       *
       * <p>Patterns may be separated by a comma or a space.</p>
       *
       * @param excludes the string containing the exclude patterns
       */
      public void setExcludes(String excludes) {
          if (isReference()) {
              throw tooManyAttributes();
          }
  
          defaultPatterns.setExcludes(excludes);
      }
  
      /**
       * Sets the name of the file containing the includes patterns.
       *
       * @param incl The file to fetch the include patterns from.  
       */
       public void setIncludesfile(File incl) throws BuildException {
           if (isReference()) {
               throw tooManyAttributes();
           }
  
           defaultPatterns.setIncludesfile(incl);
       }
  
      /**
       * Sets the name of the file containing the includes patterns.
       *
       * @param excl The file to fetch the exclude patterns from.  
       */
       public void setExcludesfile(File excl) throws BuildException {
           if (isReference()) {
               throw tooManyAttributes();
           }
  
           defaultPatterns.setExcludesfile(excl);
       }
  
      /**
       * Sets whether default exclusions should be used or not.
       *
       * @param useDefaultExcludes "true"|"on"|"yes" when default exclusions 
       *                           should be used, "false"|"off"|"no" when they
       *                           shouldn't be used.
       */
      public void setDefaultexcludes(boolean useDefaultExcludes) {
          if (isReference()) {
              throw tooManyAttributes();
          }
  
          this.useDefaultExcludes = useDefaultExcludes;
      }
  
      /**
       * Sets case sensitivity of the file system
       *
       * @param isCaseSensitive "true"|"on"|"yes" if file system is case
       *                           sensitive, "false"|"off"|"no" when not.
       */
      public void setCaseSensitive(boolean isCaseSensitive) {
          this.isCaseSensitive = isCaseSensitive;
      }
  
      /**
       * sets the name used for this datatype instance.
       */
      protected abstract String getDataTypeName();
  
      /**
       * Returns the directory scanner needed to access the files to process.
       */
      public DirectoryScanner getDirectoryScanner(Project p) {
          if (isReference()) {
              return getRef(p).getDirectoryScanner(p);
          }
  
          if (dir == null) {
              throw new BuildException("No directory specified for "
                                       + getDataTypeName() + ".");
          }
  
          if (!dir.exists()) {
              throw new BuildException(dir.getAbsolutePath()+" not found.");
          }
          if (!dir.isDirectory()) {
              throw new BuildException(dir.getAbsolutePath()
                                       +" is not a directory.");
          }
  
          DirectoryScanner ds = new DirectoryScanner();
          setupDirectoryScanner(ds, p);
          ds.scan();
          return ds;
      }
      
      public void setupDirectoryScanner(FileScanner ds, Project p) {
          if (ds == null) {
              throw new IllegalArgumentException("ds cannot be null");
          }
          
          ds.setBasedir(dir);
  
          final int count = additionalPatterns.size();
          for (int i = 0; i < count; i++) {
              Object o = additionalPatterns.elementAt(i);
              defaultPatterns.append((PatternSet) o, p);
          }
  
          p.log(getDataTypeName() + ": Setup scanner in dir " + dir + 
              " with " + defaultPatterns, Project.MSG_DEBUG );
          
          ds.setIncludes(defaultPatterns.getIncludePatterns(p));
          ds.setExcludes(defaultPatterns.getExcludePatterns(p));
          if (useDefaultExcludes) {
              ds.addDefaultExcludes();
          }
          ds.setCaseSensitive(isCaseSensitive);
      }
  
      /**
       * Performs the check for circular references and returns the
       * referenced FileSet.  
       */
      protected AbstractFileSet getRef(Project p) {
          if (!checked) {
              Stack stk = new Stack();
              stk.push(this);
              dieOnCircularReference(stk, p);
          }
          
          Object o = ref.getReferencedObject(p);
          if (!getClass().isAssignableFrom(o.getClass())) {
              String msg = ref.getRefId()+" doesn\'t denote a " 
                  + getDataTypeName();
              throw new BuildException(msg);
          } else {
              return (AbstractFileSet) o;
          }
      }
  
  }
  
  
  
  1.5       +2 -4      jakarta-ant/src/testcases/org/apache/tools/ant/types/DirSetTest.java
  
  Index: DirSetTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/testcases/org/apache/tools/ant/types/DirSetTest.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DirSetTest.java	4 Apr 2002 14:16:27 -0000	1.4
  +++ DirSetTest.java	8 Apr 2002 14:25:18 -0000	1.5
  @@ -61,13 +61,13 @@
    *
    * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
    */
  -public class DirSetTest extends FileSetTest {
  +public class DirSetTest extends AbstractFileSetTest {
   
       public DirSetTest(String name) {
           super(name);
       }
   
  -    protected FileSet getInstance() {
  +    protected AbstractFileSet getInstance() {
           return new DirSet();
       }
   
  @@ -85,7 +85,6 @@
               assertEquals("dummy doesn\'t denote a dirset", e.getMessage());
           }
   
  -/*        
           ds = (DirSet) getInstance();
           ds.setProject(getProject());
           getProject().addReference("dummy2", ds);
  @@ -96,7 +95,6 @@
           } catch (BuildException e) {
               assertEquals("dummy2 doesn\'t denote a fileset", e.getMessage());
           }
  -*/
       }
   
   }
  
  
  
  1.8       +2 -176    jakarta-ant/src/testcases/org/apache/tools/ant/types/FileSetTest.java
  
  Index: FileSetTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/testcases/org/apache/tools/ant/types/FileSetTest.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- FileSetTest.java	3 Apr 2002 11:38:33 -0000	1.7
  +++ FileSetTest.java	8 Apr 2002 14:25:18 -0000	1.8
  @@ -70,188 +70,14 @@
    * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
    */
   
  -public class FileSetTest extends TestCase {
  -
  -    private Project project;
  +public class FileSetTest extends AbstractFileSetTest {
   
       public FileSetTest(String name) {
           super(name);
       }
   
  -    public void setUp() {
  -        project = new Project();
  -        project.setBasedir(".");
  -    }
  -
  -    protected FileSet getInstance() {
  +    protected AbstractFileSet getInstance() {
           return new FileSet();
       }
   
  -    protected Project getProject() {
  -        return project;
  -    }
  -
  -    public void testEmptyElementIfIsReference() {
  -        FileSet f = getInstance();
  -        f.setIncludes("**/*.java");
  -        try {
  -            f.setRefid(new Reference("dummyref"));
  -            fail("Can add reference to FileSet with elements from setIncludes");
  -        } catch (BuildException be) {
  -            assertEquals("You must not specify more than one attribute when using refid",
  -                         be.getMessage());
  -        }
  -
  -        f = getInstance();
  -        f.createPatternSet();
  -        try {
  -            f.setRefid(new Reference("dummyref"));
  -            fail("Can add reference to FileSet with nested patternset element.");
  -        } catch (BuildException be) {
  -            assertEquals("You must not specify nested elements when using refid",
  -                         be.getMessage());
  -        }
  -
  -        f = getInstance();
  -        f.createInclude();
  -        try {
  -            f.setRefid(new Reference("dummyref"));
  -            fail("Can add reference to FileSet with nested include element.");
  -        } catch (BuildException be) {
  -            assertEquals("You must not specify more than one attribute when using refid",
  -                         be.getMessage());
  -        }
  -
  -        f = getInstance();
  -        f.setRefid(new Reference("dummyref"));
  -        try {
  -            f.setIncludes("**/*.java");
  -            fail("Can set includes in FileSet that is a reference.");
  -        } catch (BuildException be) {
  -            assertEquals("You must not specify more than one attribute when using refid",
  -                         be.getMessage());
  -        }
  -        try {
  -            f.setIncludesfile(new File("/a"));
  -            fail("Can set includesfile in FileSet that is a reference.");
  -        } catch (BuildException be) {
  -            assertEquals("You must not specify more than one attribute when using refid",
  -                         be.getMessage());
  -        }
  -        try {
  -            f.setExcludes("**/*.java");
  -            fail("Can set excludes in FileSet that is a reference.");
  -        } catch (BuildException be) {
  -            assertEquals("You must not specify more than one attribute when using refid",
  -                         be.getMessage());
  -        }
  -        try {
  -            f.setExcludesfile(new File("/a"));
  -            fail("Can set excludesfile in FileSet that is a reference.");
  -        } catch (BuildException be) {
  -            assertEquals("You must not specify more than one attribute when using refid",
  -                         be.getMessage());
  -        }
  -        try {
  -            f.setDir(project.resolveFile("."));
  -            fail("Can set dir in FileSet that is a reference.");
  -        } catch (BuildException be) {
  -            assertEquals("You must not specify more than one attribute when using refid",
  -                         be.getMessage());
  -        }
  -        try {
  -            f.createInclude();
  -            fail("Can add nested include in FileSet that is a reference.");
  -        } catch (BuildException be) {
  -            assertEquals("You must not specify nested elements when using refid",
  -                         be.getMessage());
  -        }
  -        try {
  -            f.createExclude();
  -            fail("Can add nested exclude in FileSet that is a reference.");
  -        } catch (BuildException be) {
  -            assertEquals("You must not specify nested elements when using refid",
  -                         be.getMessage());
  -        }
  -        try {
  -            f.createIncludesFile();
  -            fail("Can add nested includesfile in FileSet that is a reference.");
  -        } catch (BuildException be) {
  -            assertEquals("You must not specify nested elements when using refid",
  -                         be.getMessage());
  -        }
  -        try {
  -            f.createExcludesFile();
  -            fail("Can add nested excludesfile in FileSet that is a reference.");
  -        } catch (BuildException be) {
  -            assertEquals("You must not specify nested elements when using refid",
  -                         be.getMessage());
  -        }
  -        try {
  -            f.createPatternSet();
  -            fail("Can add nested patternset in FileSet that is a reference.");
  -        } catch (BuildException be) {
  -            assertEquals("You must not specify nested elements when using refid",
  -                         be.getMessage());
  -        }
  -    }
  -
  -    public void testCircularReferenceCheck() {
  -        FileSet f = getInstance();
  -        project.addReference("dummy", f);
  -        f.setRefid(new Reference("dummy"));
  -        try {
  -            f.getDir(project);
  -            fail("Can make FileSet a Reference to itself.");
  -        } catch (BuildException be) {
  -            assertEquals("This data type contains a circular reference.",
  -                         be.getMessage());
  -        }
  -        try {
  -            f.getDirectoryScanner(project);
  -            fail("Can make FileSet a Reference to itself.");
  -        } catch (BuildException be) {
  -            assertEquals("This data type contains a circular reference.",
  -                         be.getMessage());
  -        }
  -
  -        // dummy1 --> dummy2 --> dummy3 --> dummy1
  -        FileSet f1 = getInstance();
  -        project.addReference("dummy1", f1);
  -        f1.setRefid(new Reference("dummy2"));
  -        FileSet f2 = getInstance();
  -        project.addReference("dummy2", f2);
  -        f2.setRefid(new Reference("dummy3"));
  -        FileSet f3 = getInstance();
  -        project.addReference("dummy3", f3);
  -        f3.setRefid(new Reference("dummy1"));
  -        try {
  -            f1.getDir(project);
  -            fail("Can make circular reference.");
  -        } catch (BuildException be) {
  -            assertEquals("This data type contains a circular reference.",
  -                         be.getMessage());
  -        }
  -        try {
  -            f1.getDirectoryScanner(project);
  -            fail("Can make circular reference.");
  -        } catch (BuildException be) {
  -            assertEquals("This data type contains a circular reference.",
  -                         be.getMessage());
  -        }
  -
  -        // dummy1 --> dummy2 --> dummy3 
  -        // (which has the Project's basedir as root).
  -        f1 = getInstance();
  -        project.addReference("dummy1", f1);
  -        f1.setRefid(new Reference("dummy2"));
  -        f2 = getInstance();
  -        project.addReference("dummy2", f2);
  -        f2.setRefid(new Reference("dummy3"));
  -        f3 = getInstance();
  -        project.addReference("dummy3", f3);
  -        f3.setDir(project.resolveFile("."));
  -        File dir = f1.getDir(project);
  -        assertEquals("Dir is basedir", dir, project.getBaseDir());
  -    }
   }
  
  
  
  1.1                  jakarta-ant/src/testcases/org/apache/tools/ant/types/AbstractFileSetTest.java
  
  Index: AbstractFileSetTest.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 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 apache@apache.org.
   *
   * 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.types;
  
  import org.apache.tools.ant.BuildException;
  import org.apache.tools.ant.Project;
  
  import junit.framework.TestCase;
  import junit.framework.AssertionFailedError;
  
  import java.io.File;
  
  /**
   * Base class for FileSetTest and DirSetTest.
   *
   * <p>This doesn't actually test much, mainly reference handling.
   *
   * @author <a href="mailto:stefan.bodewig@epost.de">Stefan Bodewig</a>
   */
  
  public abstract class AbstractFileSetTest extends TestCase {
  
      private Project project;
  
      public AbstractFileSetTest(String name) {
          super(name);
      }
  
      public void setUp() {
          project = new Project();
          project.setBasedir(".");
      }
  
      protected abstract AbstractFileSet getInstance();
  
      protected final Project getProject() {
          return project;
      }
  
      public final void testEmptyElementIfIsReference() {
          AbstractFileSet f = getInstance();
          f.setIncludes("**/*.java");
          try {
              f.setRefid(new Reference("dummyref"));
              fail("Can add reference to "
                   + f.getDataTypeName()
                   + " with elements from setIncludes");
          } catch (BuildException be) {
              assertEquals("You must not specify more than one attribute "
                           + "when using refid", be.getMessage());
          }
  
          f = getInstance();
          f.createPatternSet();
          try {
              f.setRefid(new Reference("dummyref"));
              fail("Can add reference to "
                   + f.getDataTypeName()
                   + " with nested patternset element.");
          } catch (BuildException be) {
              assertEquals("You must not specify nested elements when "
                           + "using refid", be.getMessage());
          }
  
          f = getInstance();
          f.createInclude();
          try {
              f.setRefid(new Reference("dummyref"));
              fail("Can add reference to "
                   + f.getDataTypeName()
                   + " with nested include element.");
          } catch (BuildException be) {
              assertEquals("You must not specify more than one attribute "
                           + "when using refid", be.getMessage());
          }
  
          f = getInstance();
          f.setRefid(new Reference("dummyref"));
          try {
              f.setIncludes("**/*.java");
              fail("Can set includes in "
                   + f.getDataTypeName()
                   + " that is a reference.");
          } catch (BuildException be) {
              assertEquals("You must not specify more than one attribute "
                           + "when using refid", be.getMessage());
          }
          try {
              f.setIncludesfile(new File("/a"));
              fail("Can set includesfile in "
                   + f.getDataTypeName()
                   + " that is a reference.");
          } catch (BuildException be) {
              assertEquals("You must not specify more than one attribute "
                           + "when using refid", be.getMessage());
          }
          try {
              f.setExcludes("**/*.java");
              fail("Can set excludes in "
                   + f.getDataTypeName()
                   + " that is a reference.");
          } catch (BuildException be) {
              assertEquals("You must not specify more than one attribute "
                           + "when using refid", be.getMessage());
          }
          try {
              f.setExcludesfile(new File("/a"));
              fail("Can set excludesfile in "
                   + f.getDataTypeName()
                   + " that is a reference.");
          } catch (BuildException be) {
              assertEquals("You must not specify more than one attribute "
                           + "when using refid", be.getMessage());
          }
          try {
              f.setDir(project.resolveFile("."));
              fail("Can set dir in "
                   + f.getDataTypeName()
                   + " that is a reference.");
          } catch (BuildException be) {
              assertEquals("You must not specify more than one attribute "
                           + "when using refid", be.getMessage());
          }
          try {
              f.createInclude();
              fail("Can add nested include in "
                   + f.getDataTypeName()
                   + " that is a reference.");
          } catch (BuildException be) {
              assertEquals("You must not specify nested elements when using "
                           + "refid", be.getMessage());
          }
          try {
              f.createExclude();
              fail("Can add nested exclude in "
                   + f.getDataTypeName()
                   + " that is a reference.");
          } catch (BuildException be) {
              assertEquals("You must not specify nested elements when using "
                           + "refid", be.getMessage());
          }
          try {
              f.createIncludesFile();
              fail("Can add nested includesfile in "
                   + f.getDataTypeName()
                   + " that is a reference.");
          } catch (BuildException be) {
              assertEquals("You must not specify nested elements when using "
                           + "refid", be.getMessage());
          }
          try {
              f.createExcludesFile();
              fail("Can add nested excludesfile in "
                   + f.getDataTypeName()
                   + " that is a reference.");
          } catch (BuildException be) {
              assertEquals("You must not specify nested elements when using "
                           + "refid", be.getMessage());
          }
          try {
              f.createPatternSet();
              fail("Can add nested patternset in "
                   + f.getDataTypeName()
                   + " that is a reference.");
          } catch (BuildException be) {
              assertEquals("You must not specify nested elements when using "
                           + "refid", be.getMessage());
          }
      }
  
      public void testCircularReferenceCheck() {
          AbstractFileSet f = getInstance();
          project.addReference("dummy", f);
          f.setRefid(new Reference("dummy"));
          try {
              f.getDir(project);
              fail("Can make " + f.getDataTypeName() 
                   + " a Reference to itself.");
          } catch (BuildException be) {
              assertEquals("This data type contains a circular reference.",
                           be.getMessage());
          }
          try {
              f.getDirectoryScanner(project);
              fail("Can make " + f.getDataTypeName() 
                   + " a Reference to itself.");
          } catch (BuildException be) {
              assertEquals("This data type contains a circular reference.",
                           be.getMessage());
          }
  
          // dummy1 --> dummy2 --> dummy3 --> dummy1
          AbstractFileSet f1 = getInstance();
          project.addReference("dummy1", f1);
          f1.setRefid(new Reference("dummy2"));
          AbstractFileSet f2 = getInstance();
          project.addReference("dummy2", f2);
          f2.setRefid(new Reference("dummy3"));
          AbstractFileSet f3 = getInstance();
          project.addReference("dummy3", f3);
          f3.setRefid(new Reference("dummy1"));
          try {
              f1.getDir(project);
              fail("Can make circular reference.");
          } catch (BuildException be) {
              assertEquals("This data type contains a circular reference.",
                           be.getMessage());
          }
          try {
              f1.getDirectoryScanner(project);
              fail("Can make circular reference.");
          } catch (BuildException be) {
              assertEquals("This data type contains a circular reference.",
                           be.getMessage());
          }
  
          // dummy1 --> dummy2 --> dummy3 
          // (which has the Project's basedir as root).
          f1 = getInstance();
          project.addReference("dummy1", f1);
          f1.setRefid(new Reference("dummy2"));
          f2 = getInstance();
          project.addReference("dummy2", f2);
          f2.setRefid(new Reference("dummy3"));
          f3 = getInstance();
          project.addReference("dummy3", f3);
          f3.setDir(project.resolveFile("."));
          File dir = f1.getDir(project);
          assertEquals("Dir is basedir", dir, project.getBaseDir());
      }
  }
  
  
  

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


Mime
View raw message