Skip to content

Commit e6287dd

Browse files
dr29bartmichael-o
authored andcommitted
[SUREFIRE-2232] [REGRESSION] StatelessXmlReporter fails to process failed result without a throwable
This closes #716
1 parent 57b7837 commit e6287dd

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import static org.apache.maven.plugin.surefire.report.ReportEntryType.SKIPPED;
4848
import static org.apache.maven.plugin.surefire.report.ReportEntryType.SUCCESS;
4949
import static org.apache.maven.surefire.shared.utils.StringUtils.isBlank;
50+
import static org.apache.maven.surefire.shared.utils.StringUtils.isNotBlank;
5051

5152
// CHECKSTYLE_OFF: LineLength
5253
/**
@@ -451,7 +452,9 @@ private static void getTestProblems(
451452
String type = delimiter == -1 ? stackTrace : stackTrace.substring(0, delimiter);
452453
ppw.addAttribute("type", type);
453454
} else {
454-
ppw.addAttribute("type", new StringTokenizer(stackTrace).nextToken());
455+
if (isNotBlank(stackTrace)) {
456+
ppw.addAttribute("type", new StringTokenizer(stackTrace).nextToken());
457+
}
455458
}
456459
}
457460
}

maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java

+17
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,23 @@ public void testSyncOnDeferredFile() throws Exception {
522522
assertThat((boolean) getInternalState(out, "closed")).isTrue();
523523
}
524524

525+
public void testReporterHandlesATestWithoutMessageAndWithEmptyStackTrace() {
526+
StackTraceWriter stackTraceWriterOne = new DeserializedStacktraceWriter(null, null, "");
527+
528+
WrappedReportEntry testReport = new WrappedReportEntry(
529+
new SimpleReportEntry(
530+
NORMAL_RUN, 1L, getClass().getName(), null, "a test name", null, stackTraceWriterOne, 5),
531+
ERROR,
532+
5,
533+
null,
534+
null);
535+
536+
StatelessXmlReporter reporter = new StatelessXmlReporter(
537+
reportDir, null, false, 1, new HashMap<>(), XSD, "3.0.1", false, false, false, false);
538+
539+
reporter.testSetCompleted(testReport, stats);
540+
}
541+
525542
private boolean defaultCharsetSupportsSpecialChar() {
526543
// some charsets are not able to deal with \u0115 on both ways of the conversion
527544
return "\u0115\u00DC".equals(new String("\u0115\u00DC".getBytes()));

0 commit comments

Comments
 (0)