XML delimiter characters in attribute and text content are escaped twice.
--------------------------------------------------------------------------
Key: SUREFIRE-455
URL: http://jira.codehaus.org/browse/SUREFIRE-455
Project: Maven Surefire
Issue Type: Bug
Components: xml generation
Affects Versions: 2.4.1, 2.4
Reporter: Todor Todorov
Attachments: surefire-api.patch
XML delimiter characters (left angle bracket, ampersand, etc.) are escaped
twice in _TEST-*.xml_ files in _surefire-reports_ directory. For example the
left angle bracket is replaced with &lt; instead of < and the right
angle bracket with &gt; instead of >
{code:xml}
<testcase time="2.306" classname="MyTest" name="testItem">
<failure message="expected:&lt;10&gt; but was:&lt;7&gt;"
type="junit.framework.AssertionFailedError">
junit.framework.AssertionFailedError: expected:&lt;10&gt; but
was:&lt;7&gt;
at junit.framework.Assert.fail(Assert.java:47)
at junit.framework.Assert.failNotSame(Assert.java:278)
at junit.framework.Assert.assertSame(Assert.java:242)
at MyTest.testItem(MyTest.java:38)
</failure>
</testcase>
{code}
The problem is that both *org.apache.maven.surefire.report.XMLReporter* and
*org.apache.maven.surefire.util.PrettyPrintXMLWriter* are escaping the XML
content. As a result the ampersand character is escaped once more time. In
addition *org.apache.maven.surefire.util.PrettyPrintXMLWriter#escapeXml* has
implementation error: three characters (ampersand, left angle bracket and right
angle bracket) are replaced with *&amp;*
In the attached patch (for surefire-2.4.1) I removed
*org.apache.maven.surefire.report.XMLReporter#escapeAttribute* method and fixed
*org.apache.maven.surefire.util.PrettyPrintXMLWriter#escapeXml* implementation.
Afterwards the XML report was generated as expected:
{code:xml}
<testcase time="2.306" classname="MyTest" name="testItem">
<failure message="expected:<10> but was:<7>"
type="junit.framework.AssertionFailedError">
junit.framework.AssertionFailedError: expected:<10> but was:<7>
at junit.framework.Assert.fail(Assert.java:47)
at junit.framework.Assert.failNotSame(Assert.java:278)
at junit.framework.Assert.assertSame(Assert.java:242)
at MyTest.testItem(MyTest.java:38)
</failure>
</testcase>
{code}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira