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