> -----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]