@@ -100,8 +100,10 @@ private void writeNonPassedElement(EscapingXmlStreamWriter writer, TestCaseStart
100
100
Optional <String > message = result .getMessage ();
101
101
Optional <String > exceptionType = result .getException ().map (Exception ::getType );
102
102
Optional <String > exceptionMessage = result .getException ().flatMap (Exception ::getMessage );
103
+ Optional <String > exceptionStackTrace = result .getException ().flatMap (Exception ::getStackTrace );
103
104
104
- if (message .isPresent ()) {
105
+ boolean hasMessageOrStackTrace = message .isPresent () || exceptionStackTrace .isPresent ();
106
+ if (hasMessageOrStackTrace ) {
105
107
writer .writeStartElement (elementName );
106
108
} else {
107
109
writer .writeEmptyElement (elementName );
@@ -113,13 +115,21 @@ private void writeNonPassedElement(EscapingXmlStreamWriter writer, TestCaseStart
113
115
if (exceptionMessage .isPresent ()) {
114
116
writer .writeAttribute ("message" , exceptionMessage .get ());
115
117
}
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
+ }
120
130
}
121
131
122
- if (message . isPresent () ) {
132
+ if (hasMessageOrStackTrace ) {
123
133
writer .writeEndElement ();
124
134
}
125
135
writer .newLine ();
0 commit comments