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