@@ -19,34 +19,37 @@
<import file="../../../antunit-base.xml" />
<path id="junit">
<fileset dir="../../../../../../lib/optional" includes="junit*"/>
<fileset dir="../../../../../../lib/optional" includes="junit*" />
</path>
<macrodef name="empty-test">
<attribute name="classname"/>
<attribute name="package" default="test"/>
<attribute name="classname" />
<attribute name="package" default="test" />
<sequential>
<echo file="${input}/@{classname}.java"><![CDATA[
<echo file="${input}/@{classname}.java">
<![CDATA[
package @{package};
import junit.framework.TestCase;
public class @{classname} extends TestCase {
public void testEmpty() {}
}
]]> </echo>
]]>
</echo>
</sequential>
</macrodef>
<target name="setUp">
<mkdir dir="${input}"/>
<mkdir dir="${output}"/>
<mkdir dir="${input}" />
<mkdir dir="${output}" />
</target>
<target name="testTimeoutLogOfBatchTests">
<mkdir dir="${input}"/>
<mkdir dir="${output}"/>
<empty-test classname="ATest" package="org.apache.ant.test"/>
<echo file="${input}/BTest.java"><![CDATA[
<mkdir dir="${input}" />
<mkdir dir="${output}" />
<empty-test classname="ATest" package="org.apache.ant.test" />
<echo file="${input}/BTest.java">
<![CDATA[
package org.apache.ant.test;
import junit.framework.TestCase;
@@ -55,32 +58,34 @@ public class BTest extends TestCase {
Thread.sleep(20 * 1000);
}
}
]]> </echo>
<empty-test classname="CTest" package="org.apache.ant.test"/>
<empty-test classname="DTest" package="org.apache.ant.test"/>
]]>
</echo>
<empty-test classname="CTest" package="org.apache.ant.test" />
<empty-test classname="DTest" package="org.apache.ant.test" />
<javac srcdir="${input}" destdir="${output}">
<classpath refid="junit"/>
<classpath refid="junit" />
</javac>
<junit fork="true" forkMode="perBatch" timeout="5000" printsummary="yes">
<classpath refid="junit"/>
<classpath location="${output}"/>
<classpath refid="junit" />
<classpath location="${output}" />
<batchtest>
<fileset dir="${output}">
<include name="**/*Test.class" />
</fileset>
</batchtest>
</junit>
<au:assertLogContains text="ATest"/>
<au:assertLogContains text="BTest"/>
<au:assertLogContains text="org.apache.ant.test.Batch-With-Multiple-Tests"/>
<au:assertLogDoesntContain text="CTest"/>
<au:assertLogDoesntContain text="DTest"/>
<au:assertLogContains text="ATest" />
<au:assertLogContains text="BTest" />
<au:assertLogContains text="org.apache.ant.test.Batch-With-Multiple-Tests" />
<au:assertLogDoesntContain text="CTest" />
<au:assertLogDoesntContain text="DTest" />
</target>
<target name="testFailurePropertyOnTestCase">
<mkdir dir="${input}"/>
<mkdir dir="${output}"/>
<echo file="${input}/ATest.java"><![CDATA[
<mkdir dir="${input}" />
<mkdir dir="${output}" />
<echo file="${input}/ATest.java">
<![CDATA[
package test;
import junit.framework.TestCase;
@@ -89,26 +94,28 @@ public class ATest extends TestCase {
assertTrue(false);
}
}
]]> </echo>
]]>
</echo>
<javac srcdir="${input}" destdir="${output}">
<classpath refid="junit"/>
<classpath refid="junit" />
</javac>
<junit failureProperty="testcase.failed" haltonfailure="false">
<classpath refid="junit"/>
<classpath location="${output}"/>
<classpath refid="junit" />
<classpath location="${output}" />
<batchtest>
<fileset dir="${output}">
<include name="**/*Test.class" />
</fileset>
</batchtest>
</junit>
<au:assertPropertySet name="testcase.failed"/>
<au:assertPropertySet name="testcase.failed" />
</target>
<target name="testFailurePropertyOnTestSuite">
<mkdir dir="${input}"/>
<mkdir dir="${output}"/>
<echo file="${input}/ATest.java"><![CDATA[
<mkdir dir="${input}" />
<mkdir dir="${output}" />
<echo file="${input}/ATest.java">
<![CDATA[
package test;
import junit.framework.Assert;
import junit.framework.TestSuite;
@@ -121,48 +128,49 @@ public class ATest extends TestSuite {
Assert.assertTrue(false);
}
}
]]> </echo>
]]>
</echo>
<javac srcdir="${input}" destdir="${output}">
<classpath refid="junit"/>
<classpath refid="junit" />
</javac>
<junit failureProperty="testsuite.failed" haltonfailure="false">
<classpath refid="junit"/>
<classpath location="${output}"/>
<classpath refid="junit" />
<classpath location="${output}" />
<batchtest>
<fileset dir="${output}">
<include name="**/*Test.class" />
</fileset>
</batchtest>
</junit>
<au:assertPropertySet name="testsuite.failed"/>
<au:assertPropertySet name="testsuite.failed" />
</target>
<target name="testTimeoutAndFormattersForkPerTest">
<antcall target="runTimeoutAndFormattersTest">
<param name="forkMode" value="perTest"/>
<param name="forkMode" value="perTest" />
</antcall>
<au:assertFileExists file="${output}/TEST-test.CTest.txt"/>
<au:assertFileExists file="${output}/TEST-test.CTest.xml"/>
<au:assertFileExists file="${output}/TEST-test.DTest.txt"/>
<au:assertFileExists file="${output}/TEST-test.DTest.xml"/>
<au:assertFileExists file="${output}/TEST-test.CTest.txt" />
<au:assertFileExists file="${output}/TEST-test.CTest.xml" />
<au:assertFileExists file="${output}/TEST-test.DTest.txt" />
<au:assertFileExists file="${output}/TEST-test.DTest.xml" />
</target>
<target name="testTimeoutAndFormattersForkOnce">
<antcall target="runTimeoutAndFormattersTest">
<param name="forkMode" value="once"/>
<param name="forkMode" value="once" />
</antcall>
<au:assertFileDoesntExist file="${output}/TEST-test.CTest.txt"/>
<au:assertFileDoesntExist file="${output}/TEST-test.CTest.xml"/>
<au:assertFileDoesntExist file="${output}/TEST-test.DTest.txt"/>
<au:assertFileDoesntExist file="${output}/TEST-test.DTest.xml"/>
<au:assertFileDoesntExist file="${output}/TEST-test.CTest.txt" />
<au:assertFileDoesntExist file="${output}/TEST-test.CTest.xml" />
<au:assertFileDoesntExist file="${output}/TEST-test.DTest.txt" />
<au:assertFileDoesntExist file="${output}/TEST-test.DTest.xml" />
</target>
<target name="runTimeoutAndFormattersTest"
description="https://issues.apache.org/bugzilla/show_bug.cgi?id=35634" >
<mkdir dir="${input}" />
<mkdir dir="${output}" />
<empty-test classname="ATest"/ >
<echo file="${input}/BTest.java"> <![CDATA[
<target name="runTimeoutAndFormattersTest" description="https://issues.apache.org/bugzilla/show_bug.cgi?id=35634">
<mkdir dir="${input}" / >
<mkdir dir="${output}" />
<empty-test classname="ATest" />
<echo file="${input}/BTest.java" >
<![CDATA[
package test;
import junit.framework.TestCase;
@@ -171,50 +179,51 @@ public class BTest extends TestCase {
Thread.sleep(20 * 1000);
}
}
]]></echo>
<empty-test classname="CTest"/>
<empty-test classname="DTest"/>
]]>
</echo>
<empty-test classname="CTest" />
<empty-test classname="DTest" />
<javac srcdir="${input}" destdir="${output}">
<classpath refid="junit"/>
<classpath refid="junit" />
</javac>
<junit fork="true" timeout="5000" forkmode="${forkMode}">
<classpath refid="junit"/>
<classpath location="${output}"/>
<classpath refid="junit" />
<classpath location="${output}" />
<batchtest todir="${output}">
<fileset dir="${output}">
<include name="**/*Test.class" />
</fileset>
</batchtest>
<formatter type="brief"/>
<formatter type="xml"/>
<formatter type="brief" />
<formatter type="xml" />
</junit>
<au:assertFileExists file="${output}/TEST-test.ATest.txt"/>
<au:assertFileExists file="${output}/TEST-test.ATest.xml"/>
<au:assertFileExists file="${output}/TEST-test.BTest.txt"/>
<au:assertFileExists file="${output}/TEST-test.BTest.xml"/>
<au:assertFileExists file="${output}/TEST-test.ATest.txt" />
<au:assertFileExists file="${output}/TEST-test.ATest.xml" />
<au:assertFileExists file="${output}/TEST-test.BTest.txt" />
<au:assertFileExists file="${output}/TEST-test.BTest.xml" />
</target>
<target name="-ifUnlessSetup" depends="setUp">
<empty-test classname="ATest"/>
<empty-test classname="BTest"/>
<empty-test classname="CTest"/>
<empty-test classname="DTest"/>
<empty-test classname="ETest"/>
<empty-test classname="FTest"/>
<empty-test classname="GTest"/>
<empty-test classname="HTest"/>
<empty-test classname="ATest" />
<empty-test classname="BTest" />
<empty-test classname="CTest" />
<empty-test classname="DTest" />
<empty-test classname="ETest" />
<empty-test classname="FTest" />
<empty-test classname="GTest" />
<empty-test classname="HTest" />
<javac srcdir="${input}" destdir="${output}">
<classpath refid="junit"/>
<classpath refid="junit" />
</javac>
<macrodef name="j">
<sequential>
<junit fork="true" forkMode="perBatch" printsummary="yes">
<classpath refid="junit"/>
<classpath location="${output}"/>
<test name="test.ATest" if="${if}"/>
<test name="test.BTest" if="if"/>
<test name="test.CTest" unless="${if}"/>
<test name="test.DTest" unless="if"/>
<classpath refid="junit" />
<classpath location="${output}" />
<test name="test.ATest" if="${if}" />
<test name="test.BTest" if="if" />
<test name="test.CTest" unless="${if}" />
<test name="test.DTest" unless="if" />
<batchtest if="${if}">
<fileset dir="${output}">
<include name="**/ETest.class" />
@@ -241,72 +250,72 @@ public class BTest extends TestCase {
</target>
<target name="testPropertiesNotSet" depends="-ifUnlessSetup">
<j/>
<au:assertLogDoesntContain text="Running test.ATest"/>
<au:assertLogDoesntContain text="Running test.BTest"/>
<au:assertLogContains text="Running test.CTest"/>
<au:assertLogContains text="Running test.DTest"/>
<au:assertLogDoesntContain text="Running test.ETest"/>
<au:assertLogDoesntContain text="Running test.FTest"/>
<au:assertLogContains text="Running test.GTest"/>
<au:assertLogContains text="Running test.HTest"/>
<j />
<au:assertLogDoesntContain text="Running test.ATest" />
<au:assertLogDoesntContain text="Running test.BTest" />
<au:assertLogContains text="Running test.CTest" />
<au:assertLogContains text="Running test.DTest" />
<au:assertLogDoesntContain text="Running test.ETest" />
<au:assertLogDoesntContain text="Running test.FTest" />
<au:assertLogContains text="Running test.GTest" />
<au:assertLogContains text="Running test.HTest" />
</target>
<target name="testPropertiesSet" depends="-ifUnlessSetup">
<property name="if" value="whatever"/>
<j/>
<au:assertLogDoesntContain text="Running test.ATest"/>
<au:assertLogContains text="Running test.BTest"/>
<au:assertLogContains text="Running test.CTest"/>
<au:assertLogDoesntContain text="Running test.DTest"/>
<au:assertLogDoesntContain text="Running test.ETest"/>
<au:assertLogContains text="Running test.FTest"/>
<au:assertLogContains text="Running test.GTest"/>
<au:assertLogDoesntContain text="Running test.HTest"/>
<property name="if" value="whatever" />
<j />
<au:assertLogDoesntContain text="Running test.ATest" />
<au:assertLogContains text="Running test.BTest" />
<au:assertLogContains text="Running test.CTest" />
<au:assertLogDoesntContain text="Running test.DTest" />
<au:assertLogDoesntContain text="Running test.ETest" />
<au:assertLogContains text="Running test.FTest" />
<au:assertLogContains text="Running test.GTest" />
<au:assertLogDoesntContain text="Running test.HTest" />
</target>
<target name="testPropertiesTrue" depends="-ifUnlessSetup">
<property name="if" value="true"/>
<j/>
<au:assertLogContains text="Running test.ATest"/>
<au:assertLogContains text="Running test.BTest"/>
<au:assertLogDoesntContain text="Running test.CTest"/>
<au:assertLogDoesntContain text="Running test.DTest"/>
<au:assertLogContains text="Running test.ETest"/>
<au:assertLogContains text="Running test.FTest"/>
<au:assertLogDoesntContain text="Running test.GTest"/>
<au:assertLogDoesntContain text="Running test.HTest"/>
<property name="if" value="true" />
<j />
<au:assertLogContains text="Running test.ATest" />
<au:assertLogContains text="Running test.BTest" />
<au:assertLogDoesntContain text="Running test.CTest" />
<au:assertLogDoesntContain text="Running test.DTest" />
<au:assertLogContains text="Running test.ETest" />
<au:assertLogContains text="Running test.FTest" />
<au:assertLogDoesntContain text="Running test.GTest" />
<au:assertLogDoesntContain text="Running test.HTest" />
</target>
<target name="testPropertiesFalse" depends="-ifUnlessSetup">
<property name="if" value="false"/>
<j/>
<au:assertLogDoesntContain text="Running test.ATest"/>
<au:assertLogContains text="Running test.BTest"/>
<au:assertLogContains text="Running test.CTest"/>
<au:assertLogDoesntContain text="Running test.DTest"/>
<au:assertLogDoesntContain text="Running test.ETest"/>
<au:assertLogContains text="Running test.FTest"/>
<au:assertLogContains text="Running test.GTest"/>
<au:assertLogDoesntContain text="Running test.HTest"/>
<property name="if" value="false" />
<j />
<au:assertLogDoesntContain text="Running test.ATest" />
<au:assertLogContains text="Running test.BTest" />
<au:assertLogContains text="Running test.CTest" />
<au:assertLogDoesntContain text="Running test.DTest" />
<au:assertLogDoesntContain text="Running test.ETest" />
<au:assertLogContains text="Running test.FTest" />
<au:assertLogContains text="Running test.GTest" />
<au:assertLogDoesntContain text="Running test.HTest" />
</target>
<target name="testMissingTestName">
<property name="test.name" value="null"/>
<property name="test.name" value="null" />
<au:expectfailure message="test name must be specified">
<junit fork="false">
<test name="${test.name}"/>
<test name="${test.name}" />
</junit>
</au:expectfailure>
</target>
<target name="testTestMethods" if="jdk1.5+">
<echo file="${input}/T1.java">public class T1 extends
<target name="testTestMethods" if="jdk1.5+">
<echo file="${input}/T1.java">public class T1 extends
junit.framework.TestCase {
public void testOK() {}
public void testBad() {throw new RuntimeException("failed");}
}</echo>
<echo file="${input}/T2.java">
<echo file="${input}/T2.java">
import org.junit.Test;
public class T2 {
@Test
@@ -315,19 +324,18 @@ public class BTest extends TestCase {
public void bad() {
throw new RuntimeException("failed");}
}</echo>
<javac srcdir="${input}" destdir="${output}" includes="T1.java,T2.java" source="5"
includeantruntime="false" >
<classpath>
<path refid="junit"/>
</classpath>
</javac>
<junit fork="true" printsummary="true" haltonerror="true">
<classpath>
<pathelement location="${output}"/>
<path refid="junit"/>
</classpath>
<test name="T1" methods="testOK" />
<test name="T2" methods="ok" />
</junit>
</target>
<javac srcdir="${input}" destdir="${output}" includes="T1.java,T2.java" source="5" includeantruntime="false">
<classpath>
<path refid="junit" />
</classpath>
</javac>
<junit fork="true" printsummary="true" haltonerror="true">
<classpath>
<pathelement location="${output}" />
<path refid="junit" />
</classpath>
<test name="T1" methods="testOK" />
<test name="T2" methods="ok" />
</junit>
</target>
</project>