stevel 2005/05/13 14:42:23
Modified: src/etc/testcases/taskdefs/optional junitreport.xml
src/main/org/apache/tools/ant/taskdefs/optional/junit
XMLResultAggregator.java
src/testcases/org/apache/tools/ant/taskdefs/optional/junit
JUnitReportTest.java
Added: src/etc/testcases/taskdefs/optional/junitreport
INCOMPLETE-sampleproject.incomplete.xml
NAMESPACE-sampleproject.namespace.xml
WRONGELEMENT-sampleproject.wrongelement.xml
ZEROBYTES-sampleproject.package.xml
Log:
tests for junitreport handling various forms of bad data, plus explicit
handling of zero-byte files with a different error message..
Revision Changes Path
1.1
ant/src/etc/testcases/taskdefs/optional/junitreport/INCOMPLETE-sampleproject.incomplete.xml
Index: INCOMPLETE-sampleproject.incomplete.xml
===================================================================
<?xml version="1.0" encoding="UTF-8" ?>
<testsuite errors="0" failures="0" name="sampleproject.incomplete" tests="5"
time="0.038">
</properties>
<testcase name="testEquals" time="0.0"></testcase>
<testcase name="testHashCode" time="0.0"></testcase>
<testcase name="testToString" time="0.0010"></testcase>
<testcase name="testgetUniqueString" time="0.0"></testcase>
<testcase name="testSerialization" time="0.024"></testcase>
<system-out><![CDATA[testEquals
testHashCode
testToString
testgetUniqueString
testSerialization
]]></system-out>
<system-err>
1.1
ant/src/etc/testcases/taskdefs/optional/junitreport/NAMESPACE-sampleproject.namespace.xml
Index: NAMESPACE-sampleproject.namespace.xml
===================================================================
<?xml version="1.0" encoding="UTF-8" ?>
<ns:testsuite errors="1" failures="1" name="sampleproject.namespace"
tests="11" time="0.171" xmlns:ns="funny-namespace">
<properties>
<property name="testsrc" value="test/"></property>
<property name="java.runtime.name" value="Java(TM) 2 Runtime Environment,
Standard Edition"></property>
<property name="sun.boot.library.path"
value="/usr/java/jdk1.3.1_03/jre/lib/i386"></property>
<property name="java.vm.version" value="1.3.1_03-b03"></property>
<property name="ant.version" value="Apache Ant version 1.5 compiled on
July 9 2002"></property>
<property name="ant.java.version" value="1.3"></property>
<property name="java.vm.vendor" value="Sun Microsystems Inc."></property>
<property name="java.vendor.url" value="http://java.sun.com/"></property>
<property name="path.separator" value=":"></property>
<property name="java.vm.name" value="Java HotSpot(TM) Client
VM"></property>
<property name="file.encoding.pkg" value="sun.io"></property>
<property name="classes" value="classes"></property>
<property name="java.vm.specification.name" value="Java Virtual Machine
Specification"></property>
<property name="user.dir"
value="/home/jkf/programming/gretant_sourceforge/sampleproject"></property>
<property name="java.runtime.version" value="1.3.1_03-b03"></property>
<property name="java.awt.graphicsenv"
value="sun.awt.X11GraphicsEnvironment"></property>
<property name="basedir"
value="/home/jkf/programming/gretant_sourceforge/sampleproject"></property>
<property name="os.arch" value="i386"></property>
<property name="java.io.tmpdir" value="/tmp"></property>
<property name="line.separator" value="
"></property>
<property name="java.vm.specification.vendor" value="Sun Microsystems
Inc."></property>
<property name="java.awt.fonts" value=""></property>
<property name="os.name" value="Linux"></property>
<property name="ant.home" value="/opt/jakarta-ant-1.5/"></property>
<property name="ant.project.name" value="sample"></property>
<property name="reportdir" value="reports"></property>
<property name="java.library.path"
value="/usr/java/jdk1.3.1_03/jre/lib/i386:/usr/java/jdk1.3.1_03/jre/lib/i386/native_threads/:/usr/java/jdk1.3.1_03/jre/lib/i386/client:/usr/java/jdk1.3.1_03/jre/../lib/i386"></property>
<property name="src" value="code/"></property>
<property name="debug" value="on"></property>
<property name="java.specification.name" value="Java Platform API
Specification"></property>
<property name="java.class.version" value="47.0"></property>
<property name="os.version" value="2.4.18-5"></property>
<property name="ant.file"
value="/home/jkf/programming/gretant_sourceforge/sampleproject/build.xml"></property>
<property name="unitreport" value="cl-unit.xml"></property>
<property name="user.home" value="/home/jkf"></property>
<property name="user.timezone" value="Europe/Amsterdam"></property>
<property name="java.awt.printerjob"
value="sun.awt.motif.PSPrinterJob"></property>
<property name="java.specification.version" value="1.3"></property>
<property name="file.encoding" value="ISO-8859-15"></property>
<property name="java.class.path"
value="/opt/jakarta-ant-1.5//lib/xml-apis.jar:/opt/jakarta-ant-1.5//lib/xercesImpl.jar:/opt/jakarta-ant-1.5//lib/xalan.jar:/opt/jakarta-ant-1.5//lib/optional.jar:/opt/jakarta-ant-1.5//lib/junit.jar:/opt/jakarta-ant-1.5//lib/Gretel.jar:/opt/jakarta-ant-1.5//lib/gretant.jar:/opt/jakarta-ant-1.5//lib/cup-runtime.jar:/opt/jakarta-ant-1.5//lib/bcel.jar:/opt/jakarta-ant-1.5//lib/ant.jar:/usr/java/jdk1.3/lib/tools.jar"></property>
<property name="user.name" value="jkf"></property>
<property name="coverreport" value="cl-cover.xml"></property>
<property name="java.vm.specification.version" value="1.0"></property>
<property name="java.home" value="/usr/java/jdk1.3.1_03/jre"></property>
<property name="java.specification.vendor" value="Sun Microsystems
Inc."></property>
<property name="user.language" value="en"></property>
<property name="java.vm.info" value="mixed mode"></property>
<property name="java.version" value="1.3.1_03"></property>
<property name="java.ext.dirs"
value="/usr/java/jdk1.3.1_03/jre/lib/ext"></property>
<property name="sun.boot.class.path"
value="/usr/java/jdk1.3.1_03/jre/lib/rt.jar:/usr/java/jdk1.3.1_03/jre/lib/i18n.jar:/usr/java/jdk1.3.1_03/jre/lib/sunrsasign.jar:/usr/java/jdk1.3.1_03/jre/classes"></property>
<property name="java.vendor" value="Sun Microsystems Inc."></property>
<property name="file.separator" value="/"></property>
<property name="testclasses" value="testclasses"></property>
<property name="java.vendor.url.bug"
value="http://java.sun.com/cgi-bin/bugreport.cgi"></property>
<property name="sun.io.unicode.encoding" value="UnicodeLittle"></property>
<property name="sun.cpu.endian" value="little"></property>
<property name="gretclasses" value="gretclasses"></property>
<property name="user.region" value="US"></property>
<property name="sun.cpu.isalist" value=""></property>
</properties>
<testcase name="testEquals" time="0.014"></testcase>
<testcase name="testHashCode" time="0.0010"></testcase>
<testcase name="testToString" time="0.0010"></testcase>
<testcase name="testGetImageURL" time="0.0"></testcase>
<testcase name="testGetCountry" time="0.0010"></testcase>
<testcase name="testGetDenomination" time="0.0"></testcase>
<testcase name="testGetYear" time="0.0"></testcase>
<testcase name="testGetSubType" time="0.0"></testcase>
<testcase name="testFail" time="0.0080">
<failure message="DOEG"
type="junit.framework.AssertionFailedError">junit.framework.AssertionFailedError:
DOEG
at sampleproject.coins.CoinTest.testFail(CoinTest.java:229)
</failure>
</testcase>
<testcase name="testException" time="0.0010">
<error message="RTE"
type="java.lang.RuntimeException">java.lang.RuntimeException: RTE
at sampleproject.coins.CoinTest.testException(CoinTest.java:234)
</error>
</testcase>
<testcase name="testSuccess" time="0.0"></testcase>
<system-out><![CDATA[testEquals
testHashCode
Hashcodes: 1434557225 1434557225 1434557226 1463186376 1434556908 1516980401
1434557225
testToString
<Coin=NL,1 Euro,1999,Var a/>
<Coin=NL,1 Euro,1999,null/>
testGetImageURL
testGetCountry
testGetDenomination
testGetYear
testGetSubType
testFail
testException
testSuccess
]]></system-out>
<system-err><![CDATA[]]></system-err>
</ns:testsuite>
1.1
ant/src/etc/testcases/taskdefs/optional/junitreport/WRONGELEMENT-sampleproject.wrongelement.xml
Index: WRONGELEMENT-sampleproject.wrongelement.xml
===================================================================
<?xml version="1.0" encoding="UTF-8" ?>
<wildebeast/>
1.1
ant/src/etc/testcases/taskdefs/optional/junitreport/ZEROBYTES-sampleproject.package.xml
<<Binary file>>
1.2 +44 -0 ant/src/etc/testcases/taskdefs/optional/junitreport.xml
Index: junitreport.xml
===================================================================
RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/optional/junitreport.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- junitreport.xml 26 Sep 2002 12:11:37 -0000 1.1
+++ junitreport.xml 13 May 2005 21:42:23 -0000 1.2
@@ -18,6 +18,50 @@
<report todir="${outputdir}/html"/>
</junitreport>
</target>
+
+ <target name="testEmptyFile">
+ <mkdir dir="${outputdir}/html"/>
+ <junitreport todir="${outputdir}">
+ <fileset dir="${jrdir}">
+ <include name="ZEROBYTES-*.xml"/>
+ <include name="TEST-*.xml"/>
+ </fileset>
+ <report todir="${outputdir}/html"/>
+ </junitreport>
+ </target>
+
+ <target name="testIncompleteFile">
+ <mkdir dir="${outputdir}/html"/>
+ <junitreport todir="${outputdir}">
+ <fileset dir="${jrdir}">
+ <include name="INCOMPLETE-*.xml"/>
+ <include name="TEST-*.xml"/>
+ </fileset>
+ <report todir="${outputdir}/html"/>
+ </junitreport>
+ </target>
+
+ <target name="testWrongElement">
+ <mkdir dir="${outputdir}/html"/>
+ <junitreport todir="${outputdir}">
+ <fileset dir="${jrdir}">
+ <include name="WRONGELEMENT-*.xml"/>
+ <include name="TEST-*.xml"/>
+ </fileset>
+ <report todir="${outputdir}/html"/>
+ </junitreport>
+ </target>
+
+ <target name="testNamespace">
+ <mkdir dir="${outputdir}/html"/>
+ <junitreport todir="${outputdir}">
+ <fileset dir="${jrdir}">
+ <include name="NAMESPACE-*.xml"/>
+ <include name="TEST-*.xml"/>
+ </fileset>
+ <report todir="${outputdir}/html"/>
+ </junitreport>
+ </target>
<target name="clean">
<delete dir="${outputdir}"/>
1.34 +35 -18
ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregator.java
Index: XMLResultAggregator.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/XMLResultAggregator.java,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- XMLResultAggregator.java 14 Mar 2005 09:19:50 -0000 1.33
+++ XMLResultAggregator.java 13 May 2005 21:42:23 -0000 1.34
@@ -77,6 +77,19 @@
protected int generatedId = 0;
/**
+ * text checked for in tests, [EMAIL PROTECTED]
+ */
+ static final String WARNING_IS_POSSIBLY_CORRUPTED = " is not a valid XML
document. It is possibly corrupted.";
+ /**
+ * text checked for in tests, [EMAIL PROTECTED]
+ */
+ static final String WARNING_INVALID_ROOT_ELEMENT = " is not a valid
testsuite XML document";
+ /**
+ * text checked for in tests, [EMAIL PROTECTED]
+ */
+ static final String WARNING_EMPTY_FILE = " is empty.\nThis can be caused
by the test JVM exiting unexpectedly";
+
+ /**
* Generate a report based on the document created by the merge.
* @return the report
*/
@@ -228,32 +241,36 @@
// get all files and add them to the document
File[] files = getFiles();
for (int i = 0; i < files.length; i++) {
+ File file = files[i];
try {
- log("Parsing file: '" + files[i] + "'", Project.MSG_VERBOSE);
- //XXX there seems to be a bug in xerces 1.3.0 that doesn't
like file object
- // will investigate later. It does not use the given
directory but
- // the vm dir instead ? Works fine with crimson.
- Document testsuiteDoc
- = builder.parse("file:///" + files[i].getAbsolutePath());
- Element elem = testsuiteDoc.getDocumentElement();
- // make sure that this is REALLY a testsuite.
- if (TESTSUITE.equals(elem.getNodeName())) {
- addTestSuite(rootElement, elem);
- generatedId++;
+ log("Parsing file: '" + file + "'", Project.MSG_VERBOSE);
+ if(file.length()>0) {
+ Document testsuiteDoc
+ = builder.parse("file:///" +
file.getAbsolutePath());
+ Element elem = testsuiteDoc.getDocumentElement();
+ // make sure that this is REALLY a testsuite.
+ if (TESTSUITE.equals(elem.getNodeName())) {
+ addTestSuite(rootElement, elem);
+ generatedId++;
+ } else {
+ //wrong root element name
+ // issue a warning.
+ log("the file " + file
+ + WARNING_INVALID_ROOT_ELEMENT,
+ Project.MSG_WARN);
+ }
} else {
- // issue a warning.
- log("the file " + files[i]
- + " is not a valid testsuite XML document",
- Project.MSG_WARN);
+ log("the file " + file
+ + WARNING_EMPTY_FILE,
+ Project.MSG_WARN);
}
} catch (SAXException e) {
// a testcase might have failed and write a zero-length
document,
// It has already failed, but hey.... mm. just put a warning
- log("The file " + files[i] + " is not a valid XML document. "
- + "It is possibly corrupted.", Project.MSG_WARN);
+ log("The file " + file + WARNING_IS_POSSIBLY_CORRUPTED,
Project.MSG_WARN);
log(StringUtils.getStackTrace(e), Project.MSG_DEBUG);
} catch (IOException e) {
- log("Error while accessing file " + files[i] + ": "
+ log("Error while accessing file " + file + ": "
+ e.getMessage(), Project.MSG_ERR);
}
}
1.8 +36 -0
ant/src/testcases/org/apache/tools/ant/taskdefs/optional/junit/JUnitReportTest.java
Index: JUnitReportTest.java
===================================================================
RCS file:
/home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/optional/junit/JUnitReportTest.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- JUnitReportTest.java 7 Dec 2004 09:10:38 -0000 1.7
+++ JUnitReportTest.java 13 May 2005 21:42:23 -0000 1.8
@@ -52,5 +52,41 @@
}
}
+ public void assertIndexCreated() {
+ if (!new File(System.getProperty("root"),
+
"src/etc/testcases/taskdefs/optional/junitreport/test/html/index.html").exists())
{
+ fail("No file index file found");
+ }
+
+ }
+
+ /**
+ * run a target, assert the index file is there, look for text in the log
+ * @param targetName target
+ * @param text optional text to look for
+ */
+ private void expectReportWithText(String targetName, String text) {
+ executeTarget(targetName);
+ assertIndexCreated();
+ if(text!=null) {
+ assertLogContaining(text);
+ }
+ }
+
+
+ public void testEmptyFile() throws Exception {
+ expectReportWithText("testEmptyFile",
+ XMLResultAggregator.WARNING_EMPTY_FILE);
+ }
+
+ public void testIncompleteFile() throws Exception {
+ expectReportWithText("testIncompleteFile",
+ XMLResultAggregator.WARNING_IS_POSSIBLY_CORRUPTED);
+ }
+ public void testWrongElement() throws Exception {
+ expectReportWithText("testWrongElement",
+ XMLResultAggregator.WARNING_INVALID_ROOT_ELEMENT);
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]