Author: dfabulich Date: Fri Nov 23 08:51:23 2007 New Revision: 597701 URL: http://svn.apache.org/viewvc?rev=597701&view=rev Log: [SUREFIRE-57] Escape XML control characters before adding them to XML output
Modified: maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/XMLReporter.java maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire224WellFormedXmlFailuresTest.java maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/pom.xml maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/src/test/java/TestSurefire3.java Modified: maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/XMLReporter.java URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/XMLReporter.java?rev=597701&r1=597700&r2=597701&view=diff ============================================================================== --- maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/XMLReporter.java (original) +++ maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/XMLReporter.java Fri Nov 23 08:51:23 2007 @@ -19,12 +19,6 @@ * under the License. */ -import org.apache.maven.surefire.util.PrettyPrintXMLWriter; -import org.codehaus.plexus.util.IOUtil; -import org.codehaus.plexus.util.StringUtils; -import org.codehaus.plexus.util.xml.Xpp3Dom; -import org.codehaus.plexus.util.xml.Xpp3DomWriter; - import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; @@ -40,6 +34,11 @@ import java.util.Properties; import java.util.StringTokenizer; +import org.apache.maven.surefire.util.PrettyPrintXMLWriter; +import org.codehaus.plexus.util.IOUtil; +import org.codehaus.plexus.util.xml.Xpp3Dom; +import org.codehaus.plexus.util.xml.Xpp3DomWriter; + /** * XML format reporter. @@ -273,9 +272,25 @@ private static String escapeAttribute( String attribute ) { // Shouldn't Xpp3Dom do this itself? - String s = StringUtils.replace( attribute, "<", "<" ); - s = StringUtils.replace( s, ">", ">" ); - return s; + StringBuffer sb = new StringBuffer ( attribute.length() * 2 ); + for (int i = 0; i < attribute.length(); i++ ) { + char c = attribute.charAt( i ); + if ( c < 32 ) { + if ( c == '\n' || c == '\r' || c == '\t') { + sb.append( c ); + } else { + sb.append( "&#" ).append( (int) c).append( ';' ); + } + } else if ( c == '<') { + sb.append( "<" ); + } else if ( c == '>') { + sb.append( ">" ); + } + else { + sb.append( c ); + } + } + return sb.toString(); } Modified: maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire224WellFormedXmlFailuresTest.java URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire224WellFormedXmlFailuresTest.java?rev=597701&r1=597700&r2=597701&view=diff ============================================================================== --- maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire224WellFormedXmlFailuresTest.java (original) +++ maven/surefire/trunk/surefire-integration-tests/src/test/java/org/apache/maven/surefire/its/Surefire224WellFormedXmlFailuresTest.java Fri Nov 23 08:51:23 2007 @@ -26,7 +26,7 @@ // verifier.verifyErrorFreeLog(); verifier.resetStreams(); - HelperAssertions.assertTestSuiteResults( 3, 0, 3, 0, testDir ); + HelperAssertions.assertTestSuiteResults( 4, 0, 4, 0, testDir ); } } Modified: maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/pom.xml URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/pom.xml?rev=597701&r1=597700&r2=597701&view=diff ============================================================================== --- maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/pom.xml (original) +++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/pom.xml Fri Nov 23 08:51:23 2007 @@ -43,7 +43,6 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> - <version>2.1</version> <configuration> <testFailureIgnore>true</testFailureIgnore> </configuration> Modified: maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/src/test/java/TestSurefire3.java URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/src/test/java/TestSurefire3.java?rev=597701&r1=597700&r2=597701&view=diff ============================================================================== --- maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/src/test/java/TestSurefire3.java (original) +++ maven/surefire/trunk/surefire-integration-tests/src/test/resources/surefire-224-wellFormedXmlFailures/src/test/java/TestSurefire3.java Fri Nov 23 08:51:23 2007 @@ -33,4 +33,9 @@ fail( ">" ); } + public void testU0000() + { + fail( "\u0000" ); + } + }