Author: mbenson Date: Fri Sep 22 14:52:53 2006 New Revision: 449103 URL: http://svn.apache.org/viewvc?view=rev&rev=449103 Log: migrate resource selectors tests to antunit. modify containsselector to function as a resourceselector; add test. alphabetize resource selectors antlib.
Added: ant/core/trunk/src/tests/antunit/types/ ant/core/trunk/src/tests/antunit/types/resources/ ant/core/trunk/src/tests/antunit/types/resources/selectors/ ant/core/trunk/src/tests/antunit/types/resources/selectors/test.xml (with props) Removed: ant/core/trunk/src/etc/testcases/types/resources/selectors/ ant/core/trunk/src/tests/junit/org/apache/tools/ant/types/ResourceSelectorsTest.java Modified: ant/core/trunk/docs/manual/CoreTypes/resources.html ant/core/trunk/docs/manual/CoreTypes/selectors.html ant/core/trunk/src/main/org/apache/tools/ant/types/selectors/ContainsSelector.java ant/core/trunk/src/resources/org/apache/tools/ant/types/resources/selectors/antlib.xml Modified: ant/core/trunk/docs/manual/CoreTypes/resources.html URL: http://svn.apache.org/viewvc/ant/core/trunk/docs/manual/CoreTypes/resources.html?view=diff&rev=449103&r1=449102&r2=449103 ============================================================================== --- ant/core/trunk/docs/manual/CoreTypes/resources.html (original) +++ ant/core/trunk/docs/manual/CoreTypes/resources.html Fri Sep 22 14:52:53 2006 @@ -457,6 +457,8 @@ by a majority of nested resource selectors.</li> <li><a href="selectors.html#modified">modified</a> - select resources which content has changed.</li> + <li><a href="selectors.html#containsselect">contains</a> - select resources + containing a particular text string.</li> </ul> <h4><a name="rsel.name">name</a></h4> Modified: ant/core/trunk/docs/manual/CoreTypes/selectors.html URL: http://svn.apache.org/viewvc/ant/core/trunk/docs/manual/CoreTypes/selectors.html?view=diff&rev=449103&r1=449102&r2=449103 ============================================================================== --- ant/core/trunk/docs/manual/CoreTypes/selectors.html (original) +++ ant/core/trunk/docs/manual/CoreTypes/selectors.html Fri Sep 22 14:52:53 2006 @@ -98,6 +98,10 @@ the files defined by that fileset to only those which contain the string specified by the <code>text</code> attribute. .</p> + <p>The <code><contains></code> selector can be used as a + ResourceSelector (see the + <a href="resources.html#restrict"><restrict></a> + ResourceCollection).</p> <table border="1" cellpadding="2" cellspacing="0"> <tr> @@ -676,7 +680,10 @@ The comparison, computing of the hashvalue and the store is done by implementation of special interfaces. Therefore they may provide additional parameters.</p> - <p>The <code><modified></code> selector can be used as ResourceSelector. + <p>The <code><modified></code> selector can be used as a + ResourceSelector (see the + <a href="resources.html#restrict"><restrict></a> + ResourceCollection). In that case it maps simple file resources to files and does its job. If the resource is from another type, the <code><modified></code> selector tries to (<b>attention!</b>) copy the content into a local file for computing the Modified: ant/core/trunk/src/main/org/apache/tools/ant/types/selectors/ContainsSelector.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/types/selectors/ContainsSelector.java?view=diff&rev=449103&r1=449102&r2=449103 ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/types/selectors/ContainsSelector.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/types/selectors/ContainsSelector.java Fri Sep 22 14:52:53 2006 @@ -27,14 +27,18 @@ import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.types.Parameter; +import org.apache.tools.ant.types.Resource; +import org.apache.tools.ant.types.resources.FileResource; +import org.apache.tools.ant.types.resources.selectors.ResourceSelector; +import org.apache.tools.ant.util.FileUtils; /** - * Selector that filters files based on whether they contain a + * Selector that filters files/resources based on whether they contain a * particular string. * * @since 1.5 */ -public class ContainsSelector extends BaseExtendSelector { +public class ContainsSelector extends BaseExtendSelector implements ResourceSelector { private String contains = null; private boolean casesensitive = true; @@ -61,19 +65,11 @@ */ public String toString() { StringBuffer buf = new StringBuffer("{containsselector text: "); - buf.append(contains); + buf.append('"').append(contains).append('"'); buf.append(" casesensitive: "); - if (casesensitive) { - buf.append("true"); - } else { - buf.append("false"); - } + buf.append(casesensitive ? "true" : "false"); buf.append(" ignorewhitespace: "); - if (ignorewhitespace) { - buf.append("true"); - } else { - buf.append("false"); - } + buf.append(ignorewhitespace ? "true" : "false"); buf.append("}"); return buf.toString(); } @@ -153,11 +149,22 @@ * @return whether the file should be selected or not */ public boolean isSelected(File basedir, String filename, File file) { + return isSelected(new FileResource(file)); + } + + /** + * The heart of the matter. This is where the selector gets to decide + * on the inclusion of a Resource. + * + * @param r the Resource to check. + * @return whether the Resource is selected. + */ + public boolean isSelected(Resource r) { // throw BuildException on error validate(); - if (file.isDirectory()) { + if (r.isDirectory()) { return true; } @@ -170,8 +177,12 @@ } BufferedReader in = null; try { - in = new BufferedReader(new InputStreamReader( - new FileInputStream(file))); + in = new BufferedReader(new InputStreamReader(r.getInputStream())); + } catch (Exception e) { + throw new BuildException("Could not get InputStream from " + + r.toLongString(), e); + } + try { String teststr = in.readLine(); while (teststr != null) { if (!casesensitive) { @@ -187,16 +198,9 @@ } return false; } catch (IOException ioe) { - throw new BuildException("Could not read file " + filename); + throw new BuildException("Could not read " + r.toLongString()); } finally { - if (in != null) { - try { - in.close(); - } catch (Exception e) { - throw new BuildException("Could not close file " - + filename); - } - } + FileUtils.close(in); } } Modified: ant/core/trunk/src/resources/org/apache/tools/ant/types/resources/selectors/antlib.xml URL: http://svn.apache.org/viewvc/ant/core/trunk/src/resources/org/apache/tools/ant/types/resources/selectors/antlib.xml?view=diff&rev=449103&r1=449102&r2=449103 ============================================================================== --- ant/core/trunk/src/resources/org/apache/tools/ant/types/resources/selectors/antlib.xml (original) +++ ant/core/trunk/src/resources/org/apache/tools/ant/types/resources/selectors/antlib.xml Fri Sep 22 14:52:53 2006 @@ -1,26 +1,28 @@ <antlib> - <typedef name="name" - classname="org.apache.tools.ant.types.resources.selectors.Name" /> - <typedef name="not" - classname="org.apache.tools.ant.types.resources.selectors.Not" /> - <typedef name="none" - classname="org.apache.tools.ant.types.resources.selectors.None" /> <typedef name="and" classname="org.apache.tools.ant.types.resources.selectors.And" /> - <typedef name="or" - classname="org.apache.tools.ant.types.resources.selectors.Or" /> + <typedef name="contains" + classname="org.apache.tools.ant.types.selectors.ContainsSelector" /> + <typedef name="date" + classname="org.apache.tools.ant.types.resources.selectors.Date" /> <typedef name="exists" classname="org.apache.tools.ant.types.resources.selectors.Exists" /> - <typedef name="type" - classname="org.apache.tools.ant.types.resources.selectors.Type" /> - <typedef name="majority" - classname="org.apache.tools.ant.types.resources.selectors.Majority" /> <typedef name="instanceof" classname="org.apache.tools.ant.types.resources.selectors.InstanceOf" /> - <typedef name="size" - classname="org.apache.tools.ant.types.resources.selectors.Size" /> - <typedef name="date" - classname="org.apache.tools.ant.types.resources.selectors.Date" /> + <typedef name="majority" + classname="org.apache.tools.ant.types.resources.selectors.Majority" /> <typedef name="modified" classname="org.apache.tools.ant.types.selectors.modifiedselector.ModifiedSelector" /> + <typedef name="name" + classname="org.apache.tools.ant.types.resources.selectors.Name" /> + <typedef name="none" + classname="org.apache.tools.ant.types.resources.selectors.None" /> + <typedef name="not" + classname="org.apache.tools.ant.types.resources.selectors.Not" /> + <typedef name="or" + classname="org.apache.tools.ant.types.resources.selectors.Or" /> + <typedef name="size" + classname="org.apache.tools.ant.types.resources.selectors.Size" /> + <typedef name="type" + classname="org.apache.tools.ant.types.resources.selectors.Type" /> </antlib> Added: ant/core/trunk/src/tests/antunit/types/resources/selectors/test.xml URL: http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/types/resources/selectors/test.xml?view=auto&rev=449103 ============================================================================== --- ant/core/trunk/src/tests/antunit/types/resources/selectors/test.xml (added) +++ ant/core/trunk/src/tests/antunit/types/resources/selectors/test.xml Fri Sep 22 14:52:53 2006 @@ -0,0 +1,362 @@ +<project default="all" xmlns:au="antlib:org.apache.ant.antunit" + xmlns:rsel="antlib:org.apache.tools.ant.types.resources.selectors"> + + <target name="testname1"> + <au:assertTrue> + <resourcecount when="equal" count="2"> + <restrict> + <resources> + <resource name="foo" /> + <resource name="bar" /> + <resource name="baz" /> + <resource name="boo" /> + <resource name="bang" /> + </resources> + <rsel:name name="ba?" /> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="testname2"> + <au:assertTrue> + <resourcecount when="equal" count="3"> + <restrict> + <resources> + <file file="foo" /> + <resource name="foo" /> + <file file="foo" basedir="${basedir}" /> + </resources> + <rsel:name name="foo" /> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="name" depends="testname1,testname2" /> + + <target name="testexists"> + <au:assertTrue> + <resourcecount when="equal" count="1"> + <restrict> + <resources> + <file file="idonotexist" /> + <resource name="foo" /> + <resource name="foo" exists="false" /> + </resources> + <rsel:exists /> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="testinstanceoftype1"> + <au:assertTrue> + <resourcecount when="equal" count="2"> + <restrict> + <resources> + <file file="foo" /> + <url url="http://ant.apache.org/index.html" /> + <resource name="foo" /> + <string value="foo" /> + <file file="bar" /> + </resources> + <rsel:instanceof type="file" /> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="testinstanceoftype2"> + <typedef name="file" uri="test" + classname="org.apache.tools.ant.types.resources.FileResource" /> + <au:assertTrue> + <resourcecount when="equal" count="1"> + <restrict> + <resources> + <url file="foo" /> + <file file="bar" xmlns="test" /> + </resources> + <rsel:instanceof type="test:file" /> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="testinstanceoftype3"> + <typedef name="file" uri="test" + classname="org.apache.tools.ant.types.resources.FileResource" /> + <au:assertTrue> + <resourcecount when="equal" count="1"> + <restrict> + <resources> + <url file="foo" /> + <file file="bar" xmlns="test" /> + </resources> + <rsel:instanceof type="file" uri="test" /> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="testinstanceoftype" + depends="testinstanceoftype1,testinstanceoftype2,testinstanceoftype3" /> + + <target name="testinstanceofclass"> + <au:assertTrue> + <resourcecount when="equal" count="7"> + <restrict> + <resources> + <filelist dir="${basedir}" files="a,b,c,d,e,f,g" /> + </resources> + <rsel:instanceof class="org.apache.tools.ant.types.Resource" /> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="instanceof" depends="testinstanceoftype,testinstanceofclass" /> + + <target name="testtype"> + <au:assertTrue> + <resourcecount when="equal" count="2"> + <restrict> + <resources> + <file file="${basedir}" /> + <file file="${ant.file}" /> + <resource directory="true" /> + <resource directory="false" /> + </resources> + <rsel:type type="dir" /> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="testdate"> + <au:assertTrue> + <resourcecount when="equal" count="3"> + <restrict> + <resources> + <resource lastmodified="4" /> + <resource lastmodified="5" /> + <resource lastmodified="6" /> + <resource lastmodified="7" /> + <resource lastmodified="8" /> + </resources> + <rsel:date when="after" millis="5" granularity="0" /> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="testsize"> + <au:assertTrue> + <resourcecount when="equal" count="4"> + <restrict> + <resources> + <resource size="4" /> + <resource size="5" /> + <resource size="6" /> + <resource size="7" /> + <resource size="8" /> + </resources> + <rsel:size when="le" size="7" /> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="testand"> + <au:assertTrue> + <resourcecount when="equal" count="1"> + <restrict> + <resources> + <string value="fee" /> + <resource name="fi" size="3" /> + <resource name="fo" /> + <resource name="fum" /> + </resources> + <and xmlns="antlib:org.apache.tools.ant.types.resources.selectors"> + <name name="f?" /> + <size size="3" /> + </and> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="testor"> + <au:assertTrue> + <resourcecount when="equal" count="3"> + <restrict> + <resources> + <string value="fee" /> + <resource name="fi" size="3" /> + <resource name="fo" /> + <resource name="fum" /> + </resources> + <or xmlns="antlib:org.apache.tools.ant.types.resources.selectors"> + <name name="f?" /> + <size size="3" /> + </or> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="testnot"> + <au:assertTrue> + <resourcecount when="equal" count="2"> + <restrict> + <resources> + <string value="fee" /> + <resource name="fi" size="3" /> + <resource name="fo" /> + <resource name="fum" /> + </resources> + <not xmlns="antlib:org.apache.tools.ant.types.resources.selectors"> + <size size="3" /> + </not> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="testnone"> + <au:assertTrue> + <resourcecount when="equal" count="1"> + <restrict> + <resources> + <string value="fee" /> + <resource name="fi" size="3" /> + <resource name="fo" /> + <resource name="fum" /> + </resources> + <none xmlns="antlib:org.apache.tools.ant.types.resources.selectors"> + <name name="f?" /> + <size size="3" /> + </none> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="testmajority1"> + <au:assertTrue> + <resourcecount when="equal" count="2"> + <restrict> + <resources> + <string value="fee" /> + <resource name="fi" size="3" /> + <resource name="fo" /> + <resource name="fum" /> + </resources> + <majority xmlns="antlib:org.apache.tools.ant.types.resources.selectors"> + <name name="f?" /> + <size size="3" /> + <instanceof type="string" /> + </majority> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="testmajority2"> + <au:assertTrue> + <resourcecount when="equal" count="3"> + <restrict> + <resources> + <string value="fee" /> + <resource name="fi" size="3" /> + <resource name="fo" /> + <resource name="fum" /> + </resources> + <majority xmlns="antlib:org.apache.tools.ant.types.resources.selectors"> + <name name="f?" /> + <size size="3" /> + <instanceof type="resource" /> + </majority> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="testmajority3"> + <au:assertTrue> + <resourcecount when="equal" count="3"> + <restrict> + <resources> + <string value="fee" /> + <resource name="fi" size="3" /> + <resource name="fo" /> + <resource name="fum" /> + </resources> + <majority allowtie="true" + xmlns="antlib:org.apache.tools.ant.types.resources.selectors"> + <name name="f?" /> + <size size="3" /> + <instanceof type="string" /> + <exists /> + </majority> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="testmajority4"> + <au:assertTrue> + <resourcecount when="equal" count="2"> + <restrict> + <resources> + <string value="fee" /> + <resource name="fi" size="3" /> + <resource name="fo" /> + <resource name="fum" /> + </resources> + <majority allowtie="false" + xmlns="antlib:org.apache.tools.ant.types.resources.selectors"> + <name name="f?" /> + <size size="3" /> + <instanceof type="string" /> + <exists /> + </majority> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="testcontains"> + <au:assertTrue> + <resourcecount when="equal" count="2"> + <restrict> + <resources> + <string value="foo" /> + <string value="bar" /> + <string value="baz" /> + </resources> + <contains text="b" + xmlns="antlib:org.apache.tools.ant.types.resources.selectors" /> + </restrict> + </resourcecount> + </au:assertTrue> + </target> + + <target name="majority" + depends="testmajority1,testmajority2,testmajority3,testmajority4" /> + + <target name="logical" + depends="testand,testor,testnone,testnot,majority" /> + + <target name="all" + depends="name,testexists,instanceof,testtype,testdate,testsize,testcontains,logical" /> + + + + <!-- + The tests for oata.types.selectors.ModifiedSelectorTest as + ResourceSelector are in its test-buildfile src\etc\testcases\types\selectors.xml. + --> + + +</project> Propchange: ant/core/trunk/src/tests/antunit/types/resources/selectors/test.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ant/core/trunk/src/tests/antunit/types/resources/selectors/test.xml ------------------------------------------------------------------------------ svn:executable = * --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]