diff options
-rw-r--r-- | build.xml | 12 | ||||
-rw-r--r-- | jacoco.xml | 38 | ||||
-rw-r--r-- | status.xml | 3 | ||||
-rw-r--r-- | test/java/org/apache/fop/layoutengine/HyphenationLayoutTestCase.java | 53 | ||||
-rw-r--r-- | test/java/org/apache/fop/layoutengine/LayoutEngineTestUtils.java | 15 |
5 files changed, 114 insertions, 7 deletions
@@ -151,7 +151,7 @@ list of possible build targets. <property name="javac.source" value="1.5"/> <property name="javac.target" value="1.5"/> <property name="javac.fork" value="no"/> - <property name="junit.fork" value="on"/> + <property name="junit.fork" value="yes"/> <property name="junit.haltonfailure" value="off"/> <property name="javadoc.packages" value="org.apache.fop.*"/> <property name="src.dir" value="${basedir}/src"/> @@ -784,7 +784,8 @@ list of possible build targets. </sequential> </macrodef> <target name="junit-all" depends="junit-compile, junit-transcoder, junit-layout-hyphenation, setup-xml-schema" description="Runs FOP's JUnit basic tests" if="junit.present"> - <junit dir="${basedir}" haltonfailure="yes" fork="${junit.fork}" errorproperty="fop.junit.error" failureproperty="fop.junit.failure"> + <junit dir="${basedir}" haltonfailure="yes" fork="${junit.fork}" forkmode="once" + errorproperty="fop.junit.error" failureproperty="fop.junit.failure"> <sysproperty key="jawa.awt.headless" value="true"/> <formatter type="brief" usefile="false"/> <formatter type="plain" usefile="true"/> @@ -807,8 +808,8 @@ list of possible build targets. <junit-run title="standard layout engine" testsuite="org.apache.fop.layoutengine.LayoutEngineTestSuite" outfile="TEST-layoutengine-standard"/> </target> <target name="junit-layout-hyphenation" depends="hyphenation-present, junit-compile" if="hyphenation.present" description="Runs FOP's JUnit hyphenation layout tests"> - <property name="fop.layoutengine.testset" value="hyphenation"/> - <junit-run title="hyphenation layout engine" testsuite="org.apache.fop.layoutengine.LayoutEngineTestSuite" outfile="TEST-layoutengine-hyphenation"/> + <junit-run title="hyphenation layout engine" testsuite="org.apache.fop.layoutengine.HyphenationLayoutTestCase" + outfile="TEST-layoutengine-hyphenation"/> </target> <target name="junit-layout" depends="junit-layout-standard, junit-layout-hyphenation" description="Runs all FOP's JUnit layout tests"/> <target name="junit-fotree" depends="junit-compile" description="Runs FOP's FO tree JUnit tests" if="junit.present"> @@ -851,7 +852,8 @@ list of possible build targets. <junit-run title="render-pdf" testsuite="org.apache.fop.render.pdf.RenderPDFTestSuite" outfile="TEST-render-pdf"/> </target> <target name="junit-reduced" depends="junit-userconfig, junit-basic, junit-transcoder, junit-text-linebreak, junit-fotree, junit-render-pdf"/> - <target name="junit" depends="junit-all" description="Runs all of FOP's JUnit tests" if="junit.present"> + <target name="junit" depends="junit-all" description="Runs all of FOP's JUnit tests" + if="junit.present"> <fail><condition><or><isset property="fop.junit.error"/><isset property="fop.junit.failure"/><not><isset property="hyphenation.present"/></not></or></condition> NOTE: ************************************************************************** diff --git a/jacoco.xml b/jacoco.xml new file mode 100644 index 000000000..679b78c8a --- /dev/null +++ b/jacoco.xml @@ -0,0 +1,38 @@ +<?xml version="1.0"?> +<project xmlns:jacoco="antlib:org.jacoco.ant" name="JaCoCo" default="coverage-report"> + <import file="build.xml"/> + <property name="jacoco.report.dir" value="${build.dir}/report_jacoco"/> + <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml"> + <classpath location="${jacocoant.jar}"/> + </taskdef> + <target name="test-coverage" depends="junit-compile, setup-xml-schema"> + <jacoco:coverage destfile="${jacoco.report.dir}/jacoco.exec"> + <junit dir="${basedir}" haltonfailure="yes" fork="on" forkmode="once"> + <sysproperty key="jawa.awt.headless" value="true"/> + <classpath> + <path refid="standard-junit-classpath"/> + </classpath> + <batchtest> + <fileset dir="${build.unit.tests.dir}" includes="**/*TestCase.class"/> + </batchtest> + </junit> + </jacoco:coverage> + </target> + <target name="coverage-report" depends="test-coverage" + description="Runs JaCoCo for a code coverage report"> + <jacoco:report> + <executiondata> + <file file="${jacoco.report.dir}/jacoco.exec"/> + </executiondata> + <structure name="Apache FOP"> + <classfiles> + <fileset dir="${build.classes.dir}"/> + </classfiles> + <sourcefiles> + <fileset dir="${src.java.dir}"/> + </sourcefiles> + </structure> + <html destdir="${jacoco.report.dir}"/> + </jacoco:report> + </target> +</project> diff --git a/status.xml b/status.xml index e9c708f63..d95506a3f 100644 --- a/status.xml +++ b/status.xml @@ -60,6 +60,9 @@ documents. Example: the fix of marks layering will be such a case when it's done. --> <release version="FOP Trunk" date="TBD"> + <action context="Code" dev="VH" type="add" fixes-bug="52151" due-to="Mehdi Houshmand"> + Added ant script to get JaCoCo code coverage. + </action> <action context="Code" dev="VH" type="add" fixes-bug="52136" due-to="Mehdi Houshmand"> Added to build file JUnit target that uses a regex to run all of the test cases. This reduces the risk that some of them are omitted when building FOP. diff --git a/test/java/org/apache/fop/layoutengine/HyphenationLayoutTestCase.java b/test/java/org/apache/fop/layoutengine/HyphenationLayoutTestCase.java new file mode 100644 index 000000000..6b5ebbf71 --- /dev/null +++ b/test/java/org/apache/fop/layoutengine/HyphenationLayoutTestCase.java @@ -0,0 +1,53 @@ +/* + * 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. + */ + +/* $Id$ */ + +package org.apache.fop.layoutengine; + +import java.io.File; +import java.io.IOException; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + +/** + * Class for testing the FOP's hyphenation layout engine using testcases specified in XML + * files. + */ +public class HyphenationLayoutTestCase extends LayoutEngineTestCase { + + /** + * Creates the parameters for this test. + * + * @return the list of file arrays populated with test files + * @throws IOException if an I/O error occurs while reading the test file + */ + @Parameters + public static Collection<File[]> getParameters() throws IOException { + return LayoutEngineTestUtils.getLayoutTestFiles("hyphenation-testcases"); + } + + /** + * Constructor + * @param testFile the file to test + */ + public HyphenationLayoutTestCase(File testFile) { + super(testFile); + } + +} diff --git a/test/java/org/apache/fop/layoutengine/LayoutEngineTestUtils.java b/test/java/org/apache/fop/layoutengine/LayoutEngineTestUtils.java index 772204d28..935b86c3b 100644 --- a/test/java/org/apache/fop/layoutengine/LayoutEngineTestUtils.java +++ b/test/java/org/apache/fop/layoutengine/LayoutEngineTestUtils.java @@ -172,15 +172,26 @@ public final class LayoutEngineTestUtils { * @return A collection of file arrays that contain the test files */ public static Collection<File[]> getLayoutTestFiles() { - TestFilesConfiguration.Builder builder = new TestFilesConfiguration.Builder(); String testSet = System.getProperty("fop.layoutengine.testset"); testSet = (testSet != null ? testSet : "standard") + "-testcases"; + return getLayoutTestFiles(testSet); + } + + /** + * This is a helper method that uses the standard parameters for FOP's layout engine tests, + * given a test set name returns a set of test files. + * + * @param testSetName the name of the test set + * @return A collection of file arrays that contain the test files + */ + public static Collection<File[]> getLayoutTestFiles(String testSetName) { + TestFilesConfiguration.Builder builder = new TestFilesConfiguration.Builder(); builder.testDir("test/layoutengine") .singleProperty("fop.layoutengine.single") .startsWithProperty("fop.layoutengine.starts-with") .suffix(".xml") - .testSet(testSet) + .testSet(testSetName) .disabledProperty("fop.layoutengine.disabled", "test/layoutengine/disabled-testcases.xml") .privateTestsProperty("fop.layoutengine.private"); |