[ 
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 < instead of < and the right 
> angle bracket with > instead of >
> {code:xml}
>   <testcase time="2.306" classname="MyTest" name="testItem">
>     <failure message="expected:&amp;lt;10&amp;gt; but was:&amp;lt;7&amp;gt;" 
> type="junit.framework.AssertionFailedError">
> junit.framework.AssertionFailedError: expected:&amp;lt;10&amp;gt; but 
> was:&amp;lt;7&amp;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;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:&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}

-- 
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

        

Reply via email to