Skip to content

Commit 3ede278

Browse files
authored
Include value from Exception.stacktrace if available (#30)
1 parent a73086b commit 3ede278

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

88
## [Unreleased]
9+
### Added
10+
- Include value from Exception.stacktrace if available ([#30](https://github.com/cucumber/cucumber-junit-xml-formatter/pull/30), M.P. Korstanje)
11+
912
### Fixed
1013
- Do not overwrite results of retried tests ([#29](https://github.com/cucumber/cucumber-junit-xml-formatter/pull/29), M.P. Korstanje)
1114

java/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
<dependency>
5252
<groupId>io.cucumber</groupId>
5353
<artifactId>messages</artifactId>
54-
<version>[21.0.1,25.0.0)</version>
54+
<version>[24.0.0,25.0.0)</version>
5555
</dependency>
5656

5757
<dependency>

java/src/main/java/io/cucumber/junitxmlformatter/XmlReportWriter.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,10 @@ private void writeNonPassedElement(EscapingXmlStreamWriter writer, TestCaseStart
100100
Optional<String> message = result.getMessage();
101101
Optional<String> exceptionType = result.getException().map(Exception::getType);
102102
Optional<String> exceptionMessage = result.getException().flatMap(Exception::getMessage);
103+
Optional<String> exceptionStackTrace = result.getException().flatMap(Exception::getStackTrace);
103104

104-
if (message.isPresent()) {
105+
boolean hasMessageOrStackTrace = message.isPresent() || exceptionStackTrace.isPresent();
106+
if (hasMessageOrStackTrace) {
105107
writer.writeStartElement(elementName);
106108
} else {
107109
writer.writeEmptyElement(elementName);
@@ -113,13 +115,21 @@ private void writeNonPassedElement(EscapingXmlStreamWriter writer, TestCaseStart
113115
if (exceptionMessage.isPresent()) {
114116
writer.writeAttribute("message", exceptionMessage.get());
115117
}
116-
if (message.isPresent()) {
117-
writer.newLine();
118-
writer.writeCData(message.get());
119-
writer.newLine();
118+
if (hasMessageOrStackTrace) {
119+
if (exceptionStackTrace.isPresent()) {
120+
writer.newLine();
121+
writer.writeCData(exceptionStackTrace.get());
122+
writer.newLine();
123+
} else {
124+
// Fall back to message for older implementations
125+
// that put the stack trace in the message
126+
writer.newLine();
127+
writer.writeCData(message.get());
128+
writer.newLine();
129+
}
120130
}
121131

122-
if (message.isPresent()) {
132+
if (hasMessageOrStackTrace) {
123133
writer.writeEndElement();
124134
}
125135
writer.newLine();

0 commit comments

Comments
 (0)