]> source.dussan.org Git - poi.git/commitdiff
#62999 - IBM JDK JIT causes AIOOBE in TexturePaintContext
authorAndreas Beeker <kiwiwings@apache.org>
Tue, 11 Dec 2018 00:01:32 +0000 (00:01 +0000)
committerAndreas Beeker <kiwiwings@apache.org>
Tue, 11 Dec 2018 00:01:32 +0000 (00:01 +0000)
refactor jacoco/junit calls and add more IBM JIT excludes

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1848642 13f79535-47bb-0310-9956-ffa450edef68

build.xml

index ad9b2de51ed9f14284341203b720d208f44e891f..a1c00f421df5ac46f4d063c83eb74ca801ad8173 100644 (file)
--- a/build.xml
+++ b/build.xml
@@ -346,17 +346,6 @@ under the License.
         <propertyref name="scratchpad.ignore"/>
     </propertyset>
 
-    <!-- these need to be set differently when running with Java 9 -->
-    <property name="java9addmods" value="-Dthis.is.a.dummy=true"/>
-    <property name="javadoc9addmods" value="-J-Dthis.is.a.dummy=true"/>
-    <property name="java9addmodsvalue" value="-Dthis.is.a.dummy=true"/>
-    <property name="java9addopens1" value="-Dthis.is.a.dummy=true"/>
-    <property name="java9addopens2" value="-Dthis.is.a.dummy=true"/>
-    <property name="java9addopens3" value="-Dthis.is.a.dummy=true"/>
-    <property name="java9addopens4" value="-Dthis.is.a.dummy=true"/>
-    <property name="java9addopens5" value="-Dthis.is.a.dummy=true"/>
-    <property name="java9addopens6" value="-Dthis.is.a.dummy=true"/>
-
     <path id="main.classpath">
         <pathelement location="${main.commons-logging.jar}"/>
         <pathelement location="${main.commons-codec.jar}"/>
@@ -1184,6 +1173,53 @@ under the License.
         </copy>
     </target>
 
+    <macrodef name="poiunit" xmlns:jacoco="antlib:org.jacoco.ant">
+        <attribute name="failureproperty"/>
+        <attribute name="heap" default="512"/>
+        <attribute name="showoutput" default="false"/>
+        <attribute name="jacocodest" default="build/jacoco-dest.exec"/>
+        <element name="elements" implicit="true"/>
+        <sequential>
+            <local name="no.jit.sherlock"/>
+            <!-- see http://www-01.ibm.com/support/docview.wss?uid=swg21294023 on how to determine the method strings -->
+            <property name="no.jit.sherlock">
+                sun/java2d/pipe/AAShapePipe.renderTiles(Lsun/java2d/SunGraphics2D;Ljava/awt/Shape;Lsun/java2d/pipe/AATileGenerator;[I)V
+                sun/java2d/pipe/AlphaPaintPipe.renderPathTile(Ljava/lang/Object;[BIIIIII)V
+                java/awt/TexturePaintContext.getRaster(IIII)Ljava/awt/image/Raster;
+            </property>
+            <script language="javascript">
+                var before = project.getProperty("no.jit.sherlock");
+                project.setProperty("no.jit.sherlock", before.trim().replace(/ *(\S+) */g,"exclude={$1}").replace(/\s/g,","));
+            </script>
+
+            <jacoco:coverage enabled="${coverage.enabled}" excludes="${coverage.excludes}" destfile="@{jacocodest}">
+                <junit printsummary="yes" fork="yes" forkmode="once" haltonfailure="${halt.on.test.failure}"
+                       failureproperty="@{failureproperty}" showoutput="@{showoutput}">
+                    <syspropertyset refid="junit.properties"/>
+                    <sysproperty key="java.io.tmpdir" value="${tempdir}"/>
+                    <jvmarg value="-Xmx@{heap}M"/>
+                    <jvmarg value="-ea"/>
+
+                    <!-- these need to be set differently when running with Java 9 -->
+                    <jvmarg value="${java9addmods}" if:set="${java9addmods}" />
+                    <jvmarg value="${java9addmodsvalue}" if:set="${java9addmodsvalue}" />
+                    <jvmarg value="${java9addopens1}" if:set="${java9addopens1}" />
+                    <jvmarg value="${java9addopens2}" if:set="${java9addopens2}" />
+                    <jvmarg value="${java9addopens3}" if:set="${java9addopens3}" />
+                    <jvmarg value="${java9addopens4}" if:set="${java9addopens4}" />
+                    <jvmarg value="${java9addopens5}" if:set="${java9addopens5}" />
+                    <jvmarg value="${java9addopens6}" if:set="${java9addopens6}" />
+                    <!-- jvmarg value="-Duser.timezone=UTC"/ -->
+                    <jvmarg value="${file.leak.detector}" />
+                    <jvmarg value="-Xjit:verbose={compileStart|compileEnd},vlog=build/jit.log,${no.jit.sherlock}" if:true="${isIBMVM}"/>
+                    <formatter type="plain"/>
+                    <formatter type="xml"/>
+                    <elements/>
+                </junit>
+            </jacoco:coverage>
+        </sequential>
+    </macrodef>
+
     <target name="retest-ooxml" depends="jar">
         <delete dir="${ooxml.reports.test}"/>
         <delete dir="${ooxml.output.test.dir}"/>
@@ -1223,40 +1259,23 @@ under the License.
         <copy todir="${ooxml.output.dir}">
             <fileset dir="${ooxml.resource1.dir}"/>
         </copy>
-        <junit printsummary="yes" fork="yes" forkmode="once" haltonfailure="${halt.on.test.failure}"
-               failureproperty="ooxml.test.failed">
+
+        <poiunit failureproperty="ooxml.test.failed" heap="768">
             <classpath>
                 <path refid="test.ooxml.lite.verify.classpath"/>
                 <path refid="test.jar.classpath"/>
             </classpath>
-            <syspropertyset refid="junit.properties"/>
-            <sysproperty key="java.io.tmpdir" value="${tempdir}"/>
-            <jvmarg value="-Xmx768M"/>
-            <jvmarg value="-ea"/>
-            <jvmarg value="${java9addmods}" />
-            <jvmarg value="${java9addmodsvalue}" />
-            <jvmarg value="${java9addopens1}" />
-            <jvmarg value="${java9addopens2}" />
-            <jvmarg value="${java9addopens3}" />
-            <jvmarg value="${java9addopens4}" />
-            <jvmarg value="${java9addopens5}" />
-            <jvmarg value="${java9addopens6}" />
-            <!-- jvmarg value="-Duser.timezone=UTC"/ -->
-            <jvmarg value="${file.leak.detector}" />
-            <jvmarg value="-Xjit:exclude={sun/java2d/pipe/AlphaPaintPipe.renderPathTile(Ljava/lang/Object;[BIIIIII)V}" if:true="${isIBMVM}"/>
-            <formatter type="plain"/>
-            <formatter type="xml"/>
             <batchtest todir="${ooxml.reports.test}">
                 <fileset dir="${ooxml.src.test}">
-                     <include name="**/${testpattern}.java"/>
-                     <exclude name="**/TestUnfixedBugs.java"/>
-                     <exclude name="**/All*Tests.java"/>
-                     <exclude name="**/TestSignatureInfo.java"/>
-                     <exclude name="**/${testexcludepattern}.java"/>
-                     <patternset refid="exclude-scratchpad-test" if:true="${scratchpad.ignore}"/>
+                    <include name="**/${testpattern}.java"/>
+                    <exclude name="**/TestUnfixedBugs.java"/>
+                    <exclude name="**/All*Tests.java"/>
+                    <exclude name="**/TestSignatureInfo.java"/>
+                    <exclude name="**/${testexcludepattern}.java"/>
+                    <patternset refid="exclude-scratchpad-test" if:true="${scratchpad.ignore}"/>
                 </fileset>
             </batchtest>
-        </junit>
+        </poiunit>
     </target>
 
     <target name="compile-excelant" depends="compile-main,compile-ooxml">
@@ -1442,40 +1461,22 @@ under the License.
     <target name="test-main" unless="main.test.notRequired"
             depends="compile-main, -test-main-check,jacocotask" xmlns:jacoco="antlib:org.jacoco.ant"
             description="tests POI classes that deal with the Microsoft Office binary (BIFF8) file formats (excludes OOXML)">
-        <jacoco:coverage enabled="${coverage.enabled}" excludes="${coverage.excludes}" destfile="build/jacoco-main.exec">
-            <junit fork="yes" forkmode="once" printsummary="yes" haltonfailure="${halt.on.test.failure}"
-                   failureproperty="main.test.failed" showoutput="true">
-                <classpath refid="test.classpath"/>
-                <classpath refid="test.jar.classpath"/>
-                <syspropertyset refid="junit.properties"/>
-                <sysproperty key="java.io.tmpdir" value="${tempdir}"/>
-                <jvmarg value="-ea"/>
-                <jvmarg value="-Xmx256m"/>
-                <!-- jvmarg value="-Duser.timezone=UTC"/ -->
-                <jvmarg value="${java9addmods}" />
-                <jvmarg value="${java9addmodsvalue}" />
-                <jvmarg value="${java9addopens1}" />
-                <jvmarg value="${java9addopens2}" />
-                <jvmarg value="${java9addopens3}" />
-                <jvmarg value="${java9addopens4}" />
-                <jvmarg value="${java9addopens5}" />
-                <jvmarg value="${java9addopens6}" />
-                <jvmarg value="${file.leak.detector}" />
-                <jvmarg value="-Xjit:exclude={sun/java2d/pipe/AlphaPaintPipe.renderPathTile(Ljava/lang/Object;[BIIIIII)V}" if:true="${isIBMVM}"/>
-                <formatter type="plain"/>
-                <formatter type="xml"/>
-                <batchtest todir="${main.reports.test}">
-                    <fileset dir="${main.src.test}">
-                        <include name="**/${testpattern}.java"/>
-                        <exclude name="**/All*Tests.java"/>
-                        <exclude name="**/TestUnfixedBugs.java"/>
-                        <exclude name="**/TestcaseRecordInputStream.java"/>
-                        <exclude name="**/${testexcludepattern}.java"/>
-                        <patternset refid="exclude-scratchpad-test" if:true="${scratchpad.ignore}"/>
-                    </fileset>
-                </batchtest>
-            </junit>
-        </jacoco:coverage>
+        <poiunit failureproperty="main.test.failed" heap="256" showoutput="true" jacocodest="build/jacoco-main.exec">
+            <classpath>
+                <path refid="test.classpath"/>
+                <path refid="test.jar.classpath"/>
+            </classpath>
+            <batchtest todir="${main.reports.test}">
+                <fileset dir="${main.src.test}">
+                    <include name="**/${testpattern}.java"/>
+                    <exclude name="**/All*Tests.java"/>
+                    <exclude name="**/TestUnfixedBugs.java"/>
+                    <exclude name="**/TestcaseRecordInputStream.java"/>
+                    <exclude name="**/${testexcludepattern}.java"/>
+                    <patternset refid="exclude-scratchpad-test" if:true="${scratchpad.ignore}"/>
+                </fileset>
+            </batchtest>
+        </poiunit>
         <delete file="${main.testokfile}"/>
         <antcall target="-test-main-write-testfile"/>
     </target>
@@ -1507,46 +1508,23 @@ under the License.
         </uptodate>
     </target>
 
-    <target name="test-scratchpad" depends="compile-main,compile-scratchpad,-test-scratchpad-check,jacocotask,test-scratchpad-download-resources"
+    <target name="test-scratchpad" depends="compile-main,compile-scratchpad,-test-scratchpad-check,test-scratchpad-download-resources"
             unless="scratchpad.test.notRequired" xmlns:jacoco="antlib:org.jacoco.ant"
             description="test non-OOXML scratchpad classes">
-        <jacoco:coverage enabled="${coverage.enabled}" excludes="${coverage.excludes}" destfile="build/jacoco-scratchpad.exec">
-            <junit printsummary="yes" fork="yes" forkmode="once" haltonfailure="${halt.on.test.failure}"
-                   failureproperty="scratchpad.test.failed">
-                <classpath refid="test.scratchpad.classpath"/>
-                <classpath refid="test.jar.classpath"/>
-                <syspropertyset refid="junit.properties"/>
-                <sysproperty key="java.io.tmpdir" value="${tempdir}"/>
-                <jvmarg value="-ea"/>
-                <!-- jvmarg value="-Duser.timezone=UTC"/ -->
-                <jvmarg value="${file.leak.detector}" />
-                <!--
-                  YK: ensure that JUnit has enough memory to run tests.
-                  Without the line below tests fail on Mac OS X with jdk-1.6.26
-                  and on Windows with jdk-1.5.22
-                -->
-                <jvmarg value="-Xmx512m"/>
-                <jvmarg value="${java9addmods}" />
-                <jvmarg value="${java9addmodsvalue}" />
-                <jvmarg value="${java9addopens1}" />
-                <jvmarg value="${java9addopens2}" />
-                <jvmarg value="${java9addopens3}" />
-                <jvmarg value="${java9addopens4}" />
-                <jvmarg value="${java9addopens5}" />
-                <jvmarg value="${java9addopens6}" />
-                <jvmarg value="-Xjit:exclude={sun/java2d/pipe/AlphaPaintPipe.renderPathTile(Ljava/lang/Object;[BIIIIII)V}" if:true="${isIBMVM}"/>
-                <formatter type="plain"/>
-                <formatter type="xml"/>
-                <batchtest todir="${scratchpad.reports.test}">
-                    <fileset dir="${scratchpad.src.test}">
-                        <include name="**/${testpattern}.java"/>
-                        <exclude name="**/AllTests.java"/>
-                        <exclude name="**/${testexcludepattern}.java"/>
-                        <patternset refid="exclude-scratchpad-test" if:true="${scratchpad.ignore}"/>
-                    </fileset>
-                </batchtest>
-            </junit>
-        </jacoco:coverage>
+        <poiunit failureproperty="scratchpad.test.failed" heap="512" jacocodest="build/jacoco-scratchpad.exec">
+            <classpath>
+                <path refid="test.scratchpad.classpath"/>
+                <path refid="test.jar.classpath"/>
+            </classpath>
+            <batchtest todir="${scratchpad.reports.test}">
+                <fileset dir="${scratchpad.src.test}">
+                    <include name="**/${testpattern}.java"/>
+                    <exclude name="**/AllTests.java"/>
+                    <exclude name="**/${testexcludepattern}.java"/>
+                    <patternset refid="exclude-scratchpad-test" if:true="${scratchpad.ignore}"/>
+                </fileset>
+            </batchtest>
+        </poiunit>
         <delete file="${scratchpad.testokfile}"/>
         <antcall target="-test-scratchpad-write-testfile"/>
     </target>
@@ -1567,74 +1545,35 @@ under the License.
         <attribute name="classpath"/>
         <attribute name="type"/>
         <sequential>
-            <jacoco:coverage enabled="${coverage.enabled}" excludes="${coverage.excludes}" destfile="build/jacoco-@{type}.exec">
-              <junit printsummary="yes" fork="yes" forkmode="once" haltonfailure="${halt.on.test.failure}"
-                     failureproperty="ooxml.test.failed">
-                  <classpath>
-                      <path refid="@{classpath}"/>
-                      <path refid="test.jar.classpath"/>
-                  </classpath>
-                  <syspropertyset refid="junit.properties"/>
-                  <sysproperty key="java.io.tmpdir" value="${tempdir}"/>
-                  <jvmarg value="-Xmx768M"/>
-                  <jvmarg value="-ea"/>
-                  <jvmarg value="-javaagent:${ooxml.lite.agent}=${ooxml.lite.report}|${ooxml.lite.includes}"/>
-                  <jvmarg value="${java9addmods}" />
-                  <jvmarg value="${java9addmodsvalue}" />
-                  <jvmarg value="${java9addopens1}" />
-                  <jvmarg value="${java9addopens2}" />
-                  <jvmarg value="${java9addopens3}" />
-                  <jvmarg value="${java9addopens4}" />
-                  <jvmarg value="${java9addopens5}" />
-                  <jvmarg value="${java9addopens6}" />
-                  <!-- jvmarg value="-Duser.timezone=UTC"/ -->
-                  <jvmarg value="${file.leak.detector}" />
-                  <jvmarg value="-Xjit:exclude={sun/java2d/pipe/AlphaPaintPipe.renderPathTile(Ljava/lang/Object;[BIIIIII)V}" if:true="${isIBMVM}"/>
-                  <formatter type="plain"/>
-                  <formatter type="xml"/>
-                  <batchtest todir="${ooxml.reports.test}">
-                      <fileset dir="${ooxml.src.test}">
-                          <include name="**/${testpattern}.java"/>
-                          <exclude name="**/TestUnfixedBugs.java"/>
-                          <exclude name="**/All*Tests.java"/>
-                          <exclude name="**/TestSignatureInfo.java"/>
-                          <exclude name="**/${testexcludepattern}.java"/>
-                          <patternset refid="exclude-scratchpad-test" if:true="${scratchpad.ignore}"/>
-                      </fileset>
-                  </batchtest>
-              </junit>
-            </jacoco:coverage>
-            <jacoco:coverage enabled="${coverage.enabled}" excludes="${coverage.excludes}" destfile="build/jacoco-@{type}-xmlsec.exec">
-              <junit printsummary="yes" fork="yes" forkmode="once" haltonfailure="${halt.on.test.failure}"
-                     failureproperty="ooxml.xmlsec.test.failed">
-                  <classpath>
-                      <path refid="@{classpath}"/>
-                      <path refid="test.jar.classpath"/>
-                      <path refid="ooxml.xmlsec.classpath"/>
-                  </classpath>
-                  <syspropertyset refid="junit.properties"/>
-                  <sysproperty key="java.io.tmpdir" value="${tempdir}"/>
-                  <jvmarg value="-javaagent:${ooxml.lite.agent}=${ooxml.lite.report}|${ooxml.lite.includes}"/>
-                  <jvmarg value="-Xmx768M"/>
-                  <jvmarg value="-ea"/>
-                  <jvmarg value="${java9addmods}" />
-                  <jvmarg value="${java9addmodsvalue}" />
-                  <jvmarg value="${java9addopens1}" />
-                  <jvmarg value="${java9addopens2}" />
-                  <jvmarg value="${java9addopens3}" />
-                  <jvmarg value="${java9addopens4}" />
-                  <jvmarg value="${java9addopens5}" />
-                  <jvmarg value="${java9addopens6}" />
-                  <jvmarg value="-Xjit:exclude={sun/java2d/pipe/AlphaPaintPipe.renderPathTile(Ljava/lang/Object;[BIIIIII)V}" if:true="${isIBMVM}"/>
-                  <formatter type="plain"/>
-                  <formatter type="xml"/>
-                  <batchtest todir="${ooxml.reports.test}">
-                      <fileset dir="${ooxml.src.test}">
-                            <include name="**/TestSignatureInfo.java"/>
-                      </fileset>
-                  </batchtest>
-              </junit>
-            </jacoco:coverage>
+            <poiunit failureproperty="ooxml.test.failed" heap="768" jacocodest="build/jacoco-@{type}.exec">
+                <classpath>
+                    <path refid="@{classpath}"/>
+                    <path refid="test.jar.classpath"/>
+                </classpath>
+                <batchtest todir="${ooxml.reports.test}">
+                    <fileset dir="${ooxml.src.test}">
+                        <include name="**/${testpattern}.java"/>
+                        <exclude name="**/TestUnfixedBugs.java"/>
+                        <exclude name="**/All*Tests.java"/>
+                        <exclude name="**/TestSignatureInfo.java"/>
+                        <exclude name="**/${testexcludepattern}.java"/>
+                        <patternset refid="exclude-scratchpad-test" if:true="${scratchpad.ignore}"/>
+                    </fileset>
+                </batchtest>
+            </poiunit>
+
+            <poiunit failureproperty="ooxml.xmlsec.test.failed" heap="768" jacocodest="build/jacoco-@{type}-xmlsec.exec">
+                <classpath>
+                    <path refid="@{classpath}"/>
+                    <path refid="test.jar.classpath"/>
+                    <path refid="ooxml.xmlsec.classpath"/>
+                </classpath>
+                <batchtest todir="${ooxml.reports.test}">
+                    <fileset dir="${ooxml.src.test}">
+                        <include name="**/TestSignatureInfo.java"/>
+                    </fileset>
+                </batchtest>
+            </poiunit>
         </sequential>
     </macrodef>
 
@@ -1660,35 +1599,16 @@ under the License.
             unless="integration.test.notRequired" xmlns:jacoco="antlib:org.jacoco.ant">
         <propertyreset name="org.apache.poi.util.POILogger" value="org.apache.poi.util.CommonsLogger"/>
         <delete dir="build" includes="test-integration.log*"/>
-        <jacoco:coverage enabled="${coverage.enabled}" excludes="${coverage.excludes}" destfile="build/jacoco-integration.exec">
-            <junit printsummary="yes" fork="yes" forkmode="once" haltonfailure="${halt.on.test.failure}"
-                   failureproperty="integration.test.failed" showoutput="true">
-                <classpath refid="test.integration.classpath"/>
-                <syspropertyset refid="junit.properties"/>
-                <sysproperty key="java.io.tmpdir" value="${tempdir}"/>
-                <jvmarg value="-ea"/>
-                <jvmarg value="-Xmx1512M"/>
-                <jvmarg value="-javaagent:${ooxml.lite.agent}=${ooxml.lite.report}|${ooxml.lite.includes}"/>
-                <jvmarg value="${java9addmods}" />
-                <jvmarg value="${java9addmodsvalue}" />
-                <jvmarg value="${java9addopens1}" />
-                <jvmarg value="${java9addopens2}" />
-                <jvmarg value="${java9addopens3}" />
-                <jvmarg value="${java9addopens4}" />
-                <jvmarg value="${java9addopens5}" />
-                <jvmarg value="${java9addopens6}" />
-                <jvmarg value="-Xjit:exclude={sun/java2d/pipe/AlphaPaintPipe.renderPathTile(Ljava/lang/Object;[BIIIIII)V}" if:true="${isIBMVM}"/>
-                <formatter type="plain"/>
-                <formatter type="xml"/>
-                <batchtest todir="${integration.reports.test}">
-                    <fileset dir="${integration.src.test}">
-                        <include name="**/${testpattern}.java"/>
-                        <exclude name="**/${testexcludepattern}.java"/>
-                        <patternset refid="exclude-scratchpad-test" if:true="${scratchpad.ignore}"/>
-                    </fileset>
-                </batchtest>
-            </junit>
-        </jacoco:coverage>
+        <poiunit failureproperty="integration.test.failed" heap="1512" showoutput="true" jacocodest="build/jacoco-integration.exec">
+            <classpath refid="test.integration.classpath"/>
+            <batchtest todir="${integration.reports.test}">
+                <fileset dir="${integration.src.test}">
+                    <include name="**/${testpattern}.java"/>
+                    <exclude name="**/${testexcludepattern}.java"/>
+                    <patternset refid="exclude-scratchpad-test" if:true="${scratchpad.ignore}"/>
+                </fileset>
+            </batchtest>
+        </poiunit>
         <delete file="${integration.testokfile}"/>
         <antcall target="-test-integration-write-testfile"/>
     </target>
@@ -1750,34 +1670,16 @@ under the License.
 
     <target name="test-excelant" depends="compile-excelant,-test-excelant-check,jacocotask"
             unless="excelant.test.notRequired" xmlns:jacoco="antlib:org.jacoco.ant">
-        <jacoco:coverage enabled="${coverage.enabled}" excludes="${coverage.excludes}" destfile="build/jacoco-excelant.exec">
-            <junit printsummary="yes" fork="yes" forkmode="once" haltonfailure="${halt.on.test.failure}"
-                   failureproperty="excelant.test.failed">
-                <classpath refid="test.excelant.classpath"/>
-                <syspropertyset refid="junit.properties"/>
-                <sysproperty key="java.io.tmpdir" value="${tempdir}"/>
-                <jvmarg value="-ea"/>
-                <jvmarg value="${java9addmods}" />
-                <jvmarg value="${java9addmodsvalue}" />
-                <jvmarg value="${java9addopens1}" />
-                <jvmarg value="${java9addopens2}" />
-                <jvmarg value="${java9addopens3}" />
-                <jvmarg value="${java9addopens4}" />
-                <jvmarg value="${java9addopens5}" />
-                <jvmarg value="${java9addopens6}" />
-                <jvmarg value="${file.leak.detector}" />
-                <jvmarg value="-Xjit:exclude={sun/java2d/pipe/AlphaPaintPipe.renderPathTile(Ljava/lang/Object;[BIIIIII)V}" if:true="${isIBMVM}"/>
-                <formatter type="plain"/>
-                <formatter type="xml"/>
-                <batchtest todir="${excelant.reports.test}">
-                    <fileset dir="${excelant.src.test}">
-                        <include name="**/${testpattern}.java"/>
-                        <exclude name="**/${testexcludepattern}.java"/>
-                        <patternset refid="exclude-scratchpad-test" if:true="${scratchpad.ignore}"/>
-                    </fileset>
-                </batchtest>
-            </junit>
-        </jacoco:coverage>
+        <poiunit failureproperty="excelant.test.failed" jacocodest="build/jacoco-excelant.exec">
+            <classpath refid="test.excelant.classpath"/>
+            <batchtest todir="${excelant.reports.test}">
+                <fileset dir="${excelant.src.test}">
+                    <include name="**/${testpattern}.java"/>
+                    <exclude name="**/${testexcludepattern}.java"/>
+                    <patternset refid="exclude-scratchpad-test" if:true="${scratchpad.ignore}"/>
+                </fileset>
+            </batchtest>
+        </poiunit>
         <delete file="${excelant.testokfile}"/>
         <antcall target="-test-excelant-write-testfile"/>
     </target>
@@ -1843,7 +1745,7 @@ under the License.
                 <include name="org/apache/poi/**"/>
             </packageset>
             
-            <arg value="${javadoc9addmods}"/>
+            <arg value="${javadoc9addmods}" if:set="${javadoc9addmods}"/>
 
             <doctitle><![CDATA[<h1>POI API Documentation</h1>]]></doctitle>
             <bottom>
@@ -2897,8 +2799,4 @@ under the License.
     <target name="test-env" description="tests if ant is available on the jenkins slave">
       <echo>Using Ant: ${ant.version} from ${ant.home}</echo>    
     </target>
-
-    <target name="foo">
-        <echo>${isIBMVM}</echo>
-    </target>
 </project>