|
- <?xml version="1.0"?>
- <!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
- <project name="java-test" basedir="." default="foo">
- <property name="tests-classpath.value" value="${java.class.path}"/>
- <fail unless="tests-classpath.value"
- message="the property tests-classpath.value is required by this test"/>
- <import file="../buildfiletest-base.xml"/>
-
- <target name="setUp">
- <mkdir dir="${output}"/>
- </target>
-
- <!-- this property gets overridden programmatically-->
- <property name="timeToWait" value="4"/>
- <!-- this property gets overridden programmatically-->
- <property name="logFile" value="${output}/spawn.log"/>
- <property name="tmp" location="${output}/ant.tmp.java-test"/>
- <mkdir dir="${tmp}" description="The directory must exist"/>
- <property name="app"
- value="org.apache.tools.ant.taskdefs.JavaTest$$EntryPoint"/>
-
- <property name="app2"
- value="org.apache.tools.ant.taskdefs.JavaTest$$ExceptingEntryPoint"/>
-
- <property name="spawnapp"
- value="org.apache.tools.ant.taskdefs.JavaTest$$SpawnEntryPoint"/>
-
- <property name="pipeapp"
- value="org.apache.tools.ant.taskdefs.JavaTest$$PipeEntryPoint"/>
-
- <property name="module"
- value="TestModule"/>
-
- <target name="testNoJarNoClassname">
- <java/>
- </target>
-
- <target name="testJarNoFork">
- <java jar="test.jar" fork="false"/>
- </target>
-
-
- <target name="testJarAndClassName">
- <java jar="test.jar" classname="${app}"/>
- </target>
-
- <target name="testClassnameAndJar">
- <java classname="${app}" jar="test.jar"/>
- </target>
-
- <target name="testModuleAndJar">
- <java module="${module}" jar="test.jar"/>
- </target>
-
- <target name="testJarAndModule">
- <java jar="test.jar" module="${module}"/>
- </target>
-
- <target name="testClassnameAndModule">
- <java classname="${app}" module="${module}" fork="true"/>
- </target>
-
- <target name="testModuleAndClassname">
- <java module="${module}" classname="${app}" fork="true"/>
- </target>
-
- <target name="testModule">
- <java module="${module}" fork="true"/>
- </target>
-
- <target name="testRun">
- <fail unless="tests-classpath.value"/>
- <java classname="${app}"
- classpath="${tests-classpath.value}"/>
- </target>
-
- <target name="testRunFail">
- <java classname="${app}"
- classpath="${tests-classpath.value}">
- <arg value="2"/>
- </java>
- </target>
-
- <target name="testRunFailFoe">
- <java classname="${app}"
- classpath="${tests-classpath.value}"
- failonerror="true">
- <arg value="2"/>
- </java>
- </target>
-
- <target name="testRunFailFoeFork">
- <java classname="${app}"
- classpath="${tests-classpath.value}"
- failonerror="true"
- fork="true">
- <arg value="2"/>
- </java>
- </target>
-
- <target name="testExcepting">
- <java classname="${app2}"
- classpath="${tests-classpath.value}">
- </java>
- </target>
-
- <target name="testExceptingFork">
- <java classname="${app2}"
- classpath="${tests-classpath.value}"
- fork="true">
- </java>
- </target>
-
- <target name="testExceptingFoe">
- <java classname="${app2}"
- classpath="${tests-classpath.value}"
- failonerror="true">
- </java>
- </target>
-
- <target name="testExceptingFoeFork">
- <java classname="${app2}"
- classpath="${tests-classpath.value}"
- failonerror="true"
- fork="true">
- </java>
- </target>
-
- <target name="testResultPropertyZero">
- <java classname="${app}"
- classpath="${tests-classpath.value}"
- resultproperty="exitcode"
- fork="true">
- </java>
- <echo message="exitcode = ${exitcode}"/>
- </target>
-
- <target name="testResultPropertyNonZero">
- <java classname="${app}"
- classpath="${tests-classpath.value}"
- resultproperty="exitcode"
- failonerror="false"
- fork="true">
- <arg value="2"/>
- </java>
- <echo message="exitcode = ${exitcode}"/>
- </target>
-
- <target name="testResultPropertyZeroNoFork">
- <java classname="${app}"
- classpath="${tests-classpath.value}"
- resultproperty="exitcode"
- fork="false">
- <permissions/>
- </java>
- <echo message="exitcode = ${exitcode}"/>
- </target>
-
- <target name="testResultPropertyNonZeroNoFork">
- <java classname="${app}"
- classpath="${tests-classpath.value}"
- resultproperty="exitcode"
- failonerror="false"
- fork="false">
- <arg value="-1"/>
- <permissions/>
- </java>
- <echo message="exitcode = ${exitcode}"/>
- </target>
-
- <target name="testRunFailWithFailOnError">
- <java classname="${app}"
- classpath="${tests-classpath.value}"
- failonerror="true">
- <arg value="2"/>
- </java>
- </target>
-
- <target name="testRunSuccessWithFailOnError">
- <java classname="${app}"
- classpath="${tests-classpath.value}"
- failonerror="true">
- <arg value="0"/>
- </java>
- </target>
-
- <target name="testSpawn">
- <java classname="${spawnapp}" fork="true" spawn="true" classpath="${tests-classpath.value}">
- <arg value="${timeToWait}"/>
- <arg value="${logFile}"/>
- </java>
- </target>
-
- <!--redirection testcases don't want to run under junit unless forked-->
- <target name="redirect1">
- <tempfile property="outfile" destdir="${tmp}" prefix="redirect" suffix=".out" deleteonexit="true"/>
-
- <java classname="${pipeapp}"
- classpath="${tests-classpath.value}"
- inputstring="foo"
- fork="true"
- output="${outfile}"
- errorproperty="redirect.err">
- <arg value="out"/>
- </java>
-
- <!-- let dumb Windows catch up -->
- <waitfor maxwait="30000">
- <available file="${outfile}"/>
- </waitfor>
- <waitfor maxwait="30000">
- <length file="${outfile}" length="1" when="greater"/>
- </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="r1prop">
- redirect.err="${redirect.err}" should be empty</fail>
-
- </target>
-
- <target name="redirect2" depends="redirect1">
- <tempfile property="outfile" destdir="${tmp}" prefix="redirect" suffix=".out" deleteonexit="true"/>
-
- <java classname="${pipeapp}"
- classpath="${tests-classpath.value}"
- inputstring="bar"
- append="true"
- fork="true"
- output="${outfile}"
- errorproperty="redirect.err">
- <arg value="both"/>
- </java>
-
- <!-- let dumb Windows catch up -->
- <waitfor maxwait="30000">
- <available file="${outfile}"/>
- </waitfor>
- <waitfor maxwait="30000">
- <length file="${outfile}" length="1" when="greater"/>
- </waitfor>
-
-
- <loadfile property="redirect.out.contents2" srcfile="${outfile}"/>
-
- <condition property="r2file">
- <equals arg1="${redirect.out.contents2}" arg2="foobar"/>
- </condition>
-
- <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">
- <tempfile property="outfile" destdir="${tmp}" prefix="redirect" suffix=".out" deleteonexit="true"/>
- <tempfile property="errfile" destdir="${tmp}" prefix="redirect" suffix=".err" deleteonexit="true"/>
-
- <java classname="${pipeapp}"
- classpath="${tests-classpath.value}"
- inputstring="foo"
- fork="true"
- output="${outfile}"
- error="${errfile}">
- <arg value="both"/>
- </java>
-
- <!-- let dumb Windows catch up -->
- <waitfor>
- <and>
- <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="r3file">${errfile} differs from ${outfile}</fail>
-
- </target>
-
- <target name="redirector1">
- <tempfile property="outfile" destdir="${tmp}" prefix="redirect" suffix=".out" deleteonexit="true"/>
- <tempfile property="errfile" destdir="${tmp}" prefix="redirect" suffix=".err" deleteonexit="true"/>
-
- <java taskname="foo" classname="${pipeapp}" fork="true"
- classpath="${tests-classpath.value}">
- <redirector inputstring="foo"
- output="${outfile}"
- error="${errfile}"
- createemptyfiles="false"/>
- <arg value="out"/>
- </java>
-
- <!-- let dumb Windows catch up -->
- <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="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">
- <tempfile property="outfile" destdir="${tmp}" prefix="redirect" suffix=".out" deleteonexit="true"/>
- <tempfile property="errfile" destdir="${tmp}" prefix="redirect" suffix=".err" deleteonexit="true"/>
-
- <!-- 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="${outfile}"
- error="${errfile}"
- createemptyfiles="false">
- <errorfilterchain>
- <replacestring from="foo" to="bar"/>
- </errorfilterchain>
- </redirector>
- <arg value="both"/>
- </java>
-
- <!-- let dumb Windows catch up -->
- <waitfor>
- <and>
- <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="ror1out">${errfile}:
- "${redirector.err.contents}" expected "bar"</fail>
-
- </target>
-
- <target name="flushedInput">
- <java classname="org.apache.tools.ant.taskdefs.JavaTest$$ReadPoint" fork="true"
- classpath="${tests-classpath.value}" failonerror="true" timeout="2000"/>
- </target>
-
- <target name="foo"/>
-
- </project>
|