SUREFIRE-1099 avoid invalid link ids Call toHtmlId() everytime before using testCase.getFullName() as anchor id or link target. Use DoxiaUtils.encodeId() in toHtmlId(), to avoid problems with any illegal char.
This closes #36 Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/a790a61a Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/a790a61a Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/a790a61a Branch: refs/heads/master Commit: a790a61acccb2da1524b64142ed180e30051841e Parents: bad7cb9 Author: kermit-the-frog <git...@martin.egge.info> Authored: Thu Mar 13 09:42:17 2014 +0100 Committer: Andreas Gudian <agud...@apache.org> Committed: Sat Sep 27 20:02:58 2014 +0200 ---------------------------------------------------------------------- .../surefire/report/SurefireReportGenerator.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/a790a61a/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportGenerator.java ---------------------------------------------------------------------- diff --git a/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportGenerator.java b/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportGenerator.java index 944832a..68a83b2 100644 --- a/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportGenerator.java +++ b/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportGenerator.java @@ -31,6 +31,7 @@ import org.apache.maven.doxia.markup.HtmlMarkup; import org.apache.maven.doxia.sink.Sink; import org.apache.maven.doxia.sink.SinkEventAttributeSet; import org.apache.maven.doxia.sink.SinkEventAttributes; +import org.apache.maven.doxia.util.DoxiaUtils; import org.apache.maven.reporting.MavenReportException; /** @@ -425,7 +426,7 @@ public class SurefireReportGenerator if ( failure != null ) { - sink.link( "#" + testCase.getFullName() ); + sink.link( "#" + toHtmlId( testCase.getFullName() ) ); sinkIcon( (String) failure.get( "type" ), sink ); @@ -442,7 +443,7 @@ public class SurefireReportGenerator { sink.tableCell(); - sinkLink( sink, testCase.getName(), "#" + testCase.getFullName() ); + sinkLink( sink, testCase.getName(), "#" + toHtmlId( testCase.getFullName() ) ); SinkEventAttributeSet atts = new SinkEventAttributeSet(); atts.addAttribute( SinkEventAttributes.CLASS, "detailToggle" ); @@ -540,7 +541,14 @@ public class SurefireReportGenerator private String toHtmlId( String id ) { - return id.replace( ".", "_" ); + if ( DoxiaUtils.isValidId(id) ) + { + return id; + } + else + { + return DoxiaUtils.encodeId( id, true ); + } } private void constructFailureDetails( Sink sink, ResourceBundle bundle, List<ReportTestCase> failureList ) @@ -579,7 +587,7 @@ public class SurefireReportGenerator sink.tableCell_(); - sinkCellAnchor( sink, tCase.getName(), tCase.getFullName() ); + sinkCellAnchor( sink, tCase.getName(), toHtmlId( tCase.getFullName() ) ); sink.tableRow_();