mbenson 2004/04/22 13:18:35 Modified: src/etc/testcases/taskdefs java.xml Log: Incorporate <waitfor> to improve the chances of a pass on Windows. :( Also make the failures more instructive for redirect* testcases. Revision Changes Path 1.14 +128 -56 ant/src/etc/testcases/taskdefs/java.xml Index: java.xml =================================================================== RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/java.xml,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- java.xml 27 Mar 2004 21:24:15 -0000 1.13 +++ java.xml 22 Apr 2004 20:18:35 -0000 1.14 @@ -7,7 +7,7 @@ <property name="timeToWait" value="4"/> <!-- this property gets overridden programmatically--> <property name="logFile" value="spawn.log"/> - <property name="tmp" value="${java.io.tmpdir}"/> + <property name="tmp" location="${java.io.tmpdir}"/> <property name="app" value="org.apache.tools.ant.taskdefs.JavaTest$$EntryPoint" /> @@ -169,105 +169,162 @@ <!--redirection testcases don't want to run under junit unless forked--> <target name="redirect1"> + <property name="outfile" location="${tmp}/redirect.out" /> + <java classname="${pipeapp}" classpath="${tests-classpath.value}" inputstring="foo" fork="true" - output="${tmp}/redirect.out" + output="${outfile}" errorproperty="redirect.err"> <arg value="out" /> </java> + <!-- let dumb Windows catch up --> - <sleep seconds="2" /> - <loadfile property="redirect.out.contents" srcfile="${tmp}/redirect.out" /> - <condition property="r1pass"> - <and> - <equals arg1="${redirect.out.contents}" arg2="foo" /> - <equals arg1="${redirect.err}" arg2="" /> - </and> + <waitfor> + <available file="${outfile}" /> + </waitfor> + + <loadfile property="redirect.out.contents" srcfile="${outfile}" /> + + <condition property="r1file"> + <equals arg1="${redirect.out.contents}" arg2="foo" /> + </condition> + + <fail unless="r1file">${outfile}: +"${redirect.out.contents}" expected "foo"</fail> + + <condition property="r1prop"> + <equals arg1="${redirect.err}" arg2="" /> </condition> - <fail unless="r1pass" /> + + <fail unless="r1prop"> +redirect.err="${redirect.err}" should be empty</fail> + </target> <target name="redirect2" depends="redirect1"> + <property name="outfile" location="${tmp}/redirect.out" /> + <java classname="${pipeapp}" classpath="${tests-classpath.value}" inputstring="bar" append="true" fork="true" - output="${tmp}/redirect.out" + output="${outfile}" errorproperty="redirect.err"> <arg value="both" /> </java> + <!-- let dumb Windows catch up --> - <sleep seconds="2" /> - <loadfile property="redirect.out.contents2" srcfile="${tmp}/redirect.out" /> - <condition property="r2pass"> - <and> - <equals arg1="${redirect.out.contents2}" arg2="foobar" /> - <!-- property should not be reset --> - <equals arg1="${redirect.err}" arg2="" /> - </and> + <waitfor> + <available file="${outfile}" /> + </waitfor> + + <loadfile property="redirect.out.contents2" srcfile="${outfile}" /> + + <condition property="r2file"> + <equals arg1="${redirect.out.contents2}" arg2="foobar" /> </condition> - <fail unless="r2pass" /> + + <fail unless="r2file">${outfile}: +"${redirect.out.contents2}" expected "foobar"</fail> + + <condition property="r2prop"> + <!-- property should not change --> + <equals arg1="${redirect.err}" arg2="" /> + </condition> + + <fail unless="r2prop"> +redirect.err="${redirect.err}" should be empty</fail> + </target> <target name="redirect3"> + <property name="outfile" location="${tmp}/redirect.out" /> + <property name="errfile" location="${tmp}/redirect.err" /> + <java classname="${pipeapp}" classpath="${tests-classpath.value}" inputstring="foo" fork="true" - output="${tmp}/redirect.out" - error="${tmp}/redirect.err"> + output="${outfile}" + error="${errfile}"> <arg value="both" /> </java> + <!-- let dumb Windows catch up --> - <sleep seconds="2" /> - <loadfile property="redirect.out.contents" - srcfile="${tmp}/redirect.out" /> - <condition property="r3pass"> + <waitfor> <and> - <equals arg1="${redirect.out.contents}" arg2="foo" /> - <filesmatch file1="${tmp}/redirect.out" - file2="${tmp}/redirect.err" /> + <available file="${outfile}" /> + <available file="${errfile}" /> </and> + </waitfor> + + <loadfile property="redirect.out.contents" srcfile="${outfile}" /> + + <condition property="r3file"> + <equals arg1="${redirect.out.contents}" arg2="foo" /> + </condition> + + <fail unless="r3file">${outfile}: +"${redirect.out.contents}" expected "foo"</fail> + + <condition property="r3match"> + <filesmatch file1="${outfile}" file2="${errfile}" /> </condition> - <fail unless="r3pass" /> + + <fail unless="r3file">${errfile} differs from ${outfile}</fail> + </target> <target name="redirector1"> + <property name="outfile" location="${tmp}/redirector.out" /> + <property name="errfile" location="${tmp}/redirector.err" /> + <java taskname="foo" classname="${pipeapp}" fork="true" classpath="${tests-classpath.value}"> <redirector inputstring="foo" - output="${tmp}/redirector.out" - error="${tmp}/redirector.err" + output="${outfile}" + error="${errfile}" createemptyfiles="false" /> <arg value="out" /> </java> + <!-- let dumb Windows catch up --> - <sleep seconds="2" /> - <loadfile property="redirector.out.contents" - srcfile="${tmp}/redirector.out" /> - <condition property="ror1pass"> - <and> - <equals arg1="${redirector.out.contents}" arg2="foo" /> - <not> - <available file="${tmp}/redirector.err" /> - </not> - </and> + <waitfor> + <available file="${outfile}" /> + </waitfor> + + <loadfile property="redirector.out.contents" srcfile="${outfile}" /> + + <condition property="ror1out"> + <equals arg1="${redirector.out.contents}" arg2="foo" /> </condition> - <fail unless="ror1pass" /> + + <fail unless="ror1out">${outfile}: +"${redirector.out.contents}" expected "foo"</fail> + + <condition property="ror1noerr"> + <not> + <available file="${errfile}" /> + </not> + </condition> + <fail unless="ror1noerr">${errfile} exists but should not</fail> </target> <target name="redirector2" depends="redirector1"> - <!-- fork here, some VMs can be ill-behaved with files, + <property name="outfile" location="${tmp}/redirector.out" /> + <property name="errfile" location="${tmp}/redirector.err" /> + + <!-- fork here; some VMs can be ill-behaved with files, such as W!nd0ws --> <java taskname="foo" classname="${pipeapp}" fork="true" classpath="${tests-classpath.value}"> <redirector inputstring="foo" append="true" - output="${tmp}/redirector.out" - error="${tmp}/redirector.err" + output="${outfile}" + error="${errfile}" createemptyfiles="false"> <errorfilterchain> <replacestring from="foo" to="bar" /> @@ -275,26 +332,41 @@ </redirector> <arg value="both" /> </java> + <!-- let dumb Windows catch up --> - <sleep seconds="2" /> - <loadfile property="redirector.out.contents2" - srcfile="${tmp}/redirector.out" /> - <loadfile property="redirector.err.contents" - srcfile="${tmp}/redirector.err" /> - <condition property="ror2pass"> + <waitfor> <and> - <equals arg1="${redirector.out.contents2}" arg2="foofoo" /> - <equals arg1="${redirector.err.contents}" arg2="bar" /> + <available file="${outfile}" /> + <available file="${errfile}" /> </and> + </waitfor> + + <loadfile property="redirector.out.contents2" + srcfile="${outfile}" /> + + <loadfile property="redirector.err.contents" + srcfile="${errfile}" /> + + <condition property="ror2out"> + <equals arg1="${redirector.out.contents2}" arg2="foofoo" /> + </condition> + + <fail unless="ror1out">${outfile}: +"${redirector.out.contents}" expected "foofoo"</fail> + + <condition property="ror2err"> + <equals arg1="${redirector.err.contents}" arg2="bar" /> </condition> - <fail unless="ror2pass" /> + + <fail unless="ror1out">${errfile}: +"${redirector.err.contents}" expected "bar"</fail> + </target> <target name="cleanup"> <delete> <fileset file="${logFile}" /> <fileset dir="${tmp}" includes="redirect*" /> - <fileset dir="${tmp}" includes="redirector*" /> </delete> </target>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]