Uploaded image for project: 'Maven Surefire'
  1. Maven Surefire
  2. SUREFIRE-455

XML delimiter characters in attribute and text content are escaped twice.

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.4, 2.4.1
    • 2.4.2
    • xml generation
    • None
    • Patch

    Description

      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 >

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

      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:

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

      Attachments

        1. surefire-api.patch
          4 kB
          Todor Todorov

        Activity

          People

            Unassigned Unassigned
            todorst Todor Todorov
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: