> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, January 25, 2005 10:49 AM
> To: [EMAIL PROTECTED]
> Subject: 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/Avai
> lableTest.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: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to