You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by mb...@apache.org on 2005/01/25 19:48:30 UTC

cvs commit: ant/src/etc/testcases/taskdefs available.xml

mbenson     2005/01/25 10:48:30

  Modified:    .        WHATSNEW
               src/main/org/apache/tools/ant/taskdefs Available.java
               src/testcases/org/apache/tools/ant/taskdefs
                        AvailableTest.java
               src/etc/testcases/taskdefs available.xml
  Log:
  <available> returned false positives when checking a file
  passed in with the current basedir leading twice.
  
  Revision  Changes    Path
  1.717     +3 -0      ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/ant/WHATSNEW,v
  retrieving revision 1.716
  retrieving revision 1.717
  diff -u -r1.716 -r1.717
  --- WHATSNEW	18 Jan 2005 12:35:37 -0000	1.716
  +++ WHATSNEW	25 Jan 2005 18:48:29 -0000	1.717
  @@ -50,6 +50,9 @@
     <replace> can now handle files as long as there is enough disk space
     available.
   
  +* <available> returned false positives when checking a file
  +  passed in with the current basedir leading twice:
  +  e.g. ${basedir}${file.separator}${basedir}${file.separator}foo .
   
   Other changes:
   --------------
  
  
  
  1.66      +17 -28    ant/src/main/org/apache/tools/ant/taskdefs/Available.java
  
  Index: Available.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Available.java,v
  retrieving revision 1.65
  retrieving revision 1.66
  diff -u -r1.65 -r1.66
  --- Available.java	25 Jan 2005 02:29:43 -0000	1.65
  +++ Available.java	25 Jan 2005 18:48:30 -0000	1.66
  @@ -42,7 +42,8 @@
   
       private String property;
       private String classname;
  -    private String file;
  +    private String filename;
  +    private File file;
       private Path filepath;
       private String resource;
       private FileDir type;
  @@ -144,7 +145,8 @@
        * @param file the name of the file which is required.
        */
       public void setFile(File file) {
  -        this.file = FILE_UTILS.removeLeadingPath(getProject().getBaseDir(), file);
  +        this.file = file;
  +        this.filename = FILE_UTILS.removeLeadingPath(getProject().getBaseDir(), file);
       }
   
       /**
  @@ -235,7 +237,6 @@
               throw new BuildException("At least one of (classname|file|"
                                        + "resource) is required", getLocation());
           }
  -
           if (type != null) {
               if (file == null) {
                   throw new BuildException("The type attribute is only valid "
  @@ -243,50 +244,42 @@
                                            + "attribute.", getLocation());
               }
           }
  -
           if (classpath != null) {
               classpath.setProject(getProject());
               this.loader = getProject().createClassLoader(classpath);
           }
  -
           String appendix = "";
           if (isTask) {
               appendix = " to set property " + property;
           } else {
               setTaskName("available");
           }
  -
           if ((classname != null) && !checkClass(classname)) {
               log("Unable to load class " + classname + appendix,
                   Project.MSG_VERBOSE);
               return false;
           }
  -
           if ((file != null) && !checkFile()) {
  +            StringBuffer buf = new StringBuffer("Unable to find ");
               if (type != null) {
  -                log("Unable to find " + type + " " + file + appendix,
  -                    Project.MSG_VERBOSE);
  -            } else {
  -                log("Unable to find " + file + appendix, Project.MSG_VERBOSE);
  +                buf.append(type).append(' ');
               }
  +            buf.append(filename).append(appendix);
  +            log(buf.toString(), Project.MSG_VERBOSE);
               return false;
           }
  -
           if ((resource != null) && !checkResource(resource)) {
               log("Unable to load resource " + resource + appendix,
                   Project.MSG_VERBOSE);
               return false;
           }
  -
           if (loader != null) {
               loader.cleanup();
               loader = null;
           }
  -
           if (!isTask) {
               setTaskName(null);
           }
  -
           return true;
       }
   
  @@ -308,7 +301,7 @@
        */
       private boolean checkFile() {
           if (filepath == null) {
  -            return checkFile(getProject().resolveFile(file), file);
  +            return checkFile(file, filename);
           } else {
               String[] paths = filepath.list();
               for (int i = 0; i < paths.length; ++i) {
  @@ -317,7 +310,7 @@
   
                   // **   full-pathname specified == path in list
                   // **   simple name specified   == path in list
  -                if (path.exists() && file.equals(paths[i])) {
  +                if (path.exists() && filename.equals(paths[i])) {
                       if (type == null) {
                           log("Found: " + path, Project.MSG_VERBOSE);
                           return true;
  @@ -333,11 +326,10 @@
                       // not the requested type
                       return false;
                   }
  -
                   File parent = path.getParentFile();
                   // **   full-pathname specified == parent dir of path in list
                   if (parent != null && parent.exists()
  -                    && file.equals(parent.getAbsolutePath())) {
  +                    && filename.equals(parent.getAbsolutePath())) {
                       if (type == null) {
                           log("Found: " + parent, Project.MSG_VERBOSE);
                           return true;
  @@ -348,29 +340,26 @@
                       // not the requested type
                       return false;
                   }
  -
                   // **   simple name specified   == path in list + name
                   if (path.exists() && path.isDirectory()) {
  -                    if (checkFile(new File(path, file),
  -                                  file + " in " + path)) {
  +                    if (checkFile(new File(path, filename),
  +                                  filename + " in " + path)) {
                           return true;
                       }
                   }
  -
                   // **   simple name specified   == parent dir + name
                   if (parent != null && parent.exists()) {
  -                    if (checkFile(new File(parent, file),
  -                                  file + " in " + parent)) {
  +                    if (checkFile(new File(parent, filename),
  +                                  filename + " in " + parent)) {
                           return true;
                       }
                   }
  -
                   // **   simple name specified   == parent of parent dir + name
                   if (parent != null) {
                       File grandParent = parent.getParentFile();
                       if (grandParent != null && grandParent.exists()) {
  -                        if (checkFile(new File(grandParent, file),
  -                                      file + " in " + grandParent)) {
  +                        if (checkFile(new File(grandParent, filename),
  +                                      filename + " in " + grandParent)) {
                               return true;
                           }
                       }
  
  
  
  1.17      +12 -6     ant/src/testcases/org/apache/tools/ant/taskdefs/AvailableTest.java
  
  Index: AvailableTest.java
  ===================================================================
  RCS file: /home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/AvailableTest.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- AvailableTest.java	9 Mar 2004 16:48:56 -0000	1.16
  +++ AvailableTest.java	25 Jan 2005 18:48:30 -0000	1.17
  @@ -1,5 +1,5 @@
   /*
  - * Copyright  2000-2002,2004 The Apache Software Foundation
  + * Copyright  2000-2002, 2004-2005 The Apache Software Foundation
    *
    *  Licensed under the Apache License, Version 2.0 (the "License");
    *  you may not use this file except in compliance with the License.
  @@ -22,6 +22,7 @@
   import org.apache.tools.ant.util.JavaEnvUtils;
   
   /**
  + * JUnit test for the Available task/condition.
    */
   public class AvailableTest extends BuildFileTest {
   
  @@ -164,25 +165,25 @@
       // Core class that exists in system classpath is ignored, but found in specified classpath
       public void test21() {
           executeTarget("test21");
  -        assertEquals("true",project.getProperty("test"));
  +        assertEquals("true", project.getProperty("test"));
       }
   
       // Core class that exists in system classpath is not ignored with ignoresystemclass="false"
       public void test22() {
           executeTarget("test22");
  -        assertEquals("true",project.getProperty("test"));
  +        assertEquals("true", project.getProperty("test"));
       }
   
       // Core class that exists in system classpath is not ignored with default ignoresystemclasses value
       public void test23() {
           executeTarget("test23");
  -        assertEquals("true",project.getProperty("test"));
  +        assertEquals("true", project.getProperty("test"));
       }
   
       // Class is found in specified classpath
       public void test24() {
           executeTarget("test24");
  -        assertEquals("true",project.getProperty("test"));
  +        assertEquals("true", project.getProperty("test"));
       }
   
       // File is not found in specified filepath
  @@ -194,6 +195,11 @@
       // File is not found in specified filepath
       public void testSearchInPathIsThere() {
           executeTarget("searchInPathIsThere");
  -        assertEquals("true",project.getProperty("test"));
  +        assertEquals("true", project.getProperty("test"));
  +    }
  +
  +    // test when file begins with basedir twice
  +    public void testDoubleBasedir() {
  +        executeTarget("testDoubleBasedir");
       }
   }
  
  
  
  1.13      +10 -0     ant/src/etc/testcases/taskdefs/available.xml
  
  Index: available.xml
  ===================================================================
  RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/available.xml,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- available.xml	22 Oct 2003 13:27:07 -0000	1.12
  +++ available.xml	25 Jan 2005 18:48:30 -0000	1.13
  @@ -152,4 +152,14 @@
       <available file="pvcs.xml" filepath="..:optional"
                  property="test" />
     </target>
  +
  +  <target name="testDoubleBasedir">
  +    <echo>testing ${basedir}${file.separator}${ant.file}</echo>
  +    <fail>
  +      <condition>
  +        <available file="${basedir}${file.separator}${ant.file}" />
  +      </condition>
  +    </fail>
  +  </target>
  +
   </project>
  
  
  

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