[
http://jira.codehaus.org/browse/SUREFIRE-455?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dan Fabulich closed SUREFIRE-455.
---------------------------------
Resolution: Fixed
Fix Version/s: 2.4.2
Thanks for your work here. We actually have an integration test for this that
verified XML validity, but it didn't catch this case (I examined the XML by eye
and it looked fine). I've enhanced the integration test to examine the
messages explicitly to catch this case.
Interestingly, this highlighted a bug in the way we handle non-visible control
characters (e.g. the null charater \0). You added code to explicitly filter
out null characters in your patch. That was a reasonable choice, but I decided
that we didn't want to throw away information. Also, it's not just nulls; all
non-visible control characters except for \t \n and \r are invalid in XML 1.0,
even in entity form. So I deliberately introduced SUREFIRE-456 to handle this
case.
Submitted revision 620660.
> 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, 2.4.1
> Reporter: Todor Todorov
> Fix For: 2.4.2
>
> 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