diff --git a/composer/src/main/kotlin/com/gojuno/composer/JUnitReport.kt b/composer/src/main/kotlin/com/gojuno/composer/JUnitReport.kt
index a97f763..175ee37 100644
--- a/composer/src/main/kotlin/com/gojuno/composer/JUnitReport.kt
+++ b/composer/src/main/kotlin/com/gojuno/composer/JUnitReport.kt
@@ -45,9 +45,15 @@ fun writeJunit4Report(suite: Suite, outputFile: File): Completable = Single
Passed -> {
appendln("/>")
}
- Ignored -> {
+ is Ignored -> {
appendln(">")
- appendln("")
+ if (test.status.stacktrace.isEmpty()) {
+ appendln("")
+ } else {
+ appendln("")
+ appendln(StringEscapeUtils.escapeXml10(test.status.stacktrace))
+ appendln("")
+ }
appendln("")
}
is Failed -> {
diff --git a/composer/src/main/kotlin/com/gojuno/composer/TestRun.kt b/composer/src/main/kotlin/com/gojuno/composer/TestRun.kt
index 9b9d711..ce88529 100644
--- a/composer/src/main/kotlin/com/gojuno/composer/TestRun.kt
+++ b/composer/src/main/kotlin/com/gojuno/composer/TestRun.kt
@@ -33,7 +33,7 @@ data class AdbDeviceTest(
) {
sealed class Status {
object Passed : Status()
- object Ignored : Status()
+ data class Ignored(val stacktrace: String) : Status()
data class Failed(val stacktrace: String) : Status()
}
}
@@ -106,7 +106,7 @@ fun AdbDevice.runTests(
testName = test.testName,
status = when (test.status) {
is InstrumentationTest.Status.Passed -> AdbDeviceTest.Status.Passed
- is InstrumentationTest.Status.Ignored -> AdbDeviceTest.Status.Ignored
+ is InstrumentationTest.Status.Ignored -> AdbDeviceTest.Status.Ignored(test.status.stacktrace)
is InstrumentationTest.Status.Failed -> AdbDeviceTest.Status.Failed(test.status.stacktrace)
},
durationNanos = test.durationNanos,
diff --git a/composer/src/main/kotlin/com/gojuno/composer/html/HtmlFullTest.kt b/composer/src/main/kotlin/com/gojuno/composer/html/HtmlFullTest.kt
index 10e33b8..cf4b0c4 100644
--- a/composer/src/main/kotlin/com/gojuno/composer/html/HtmlFullTest.kt
+++ b/composer/src/main/kotlin/com/gojuno/composer/html/HtmlFullTest.kt
@@ -76,11 +76,12 @@ fun AdbDeviceTest.toHtmlFullTest(suiteId: String, htmlReportDir: File) = HtmlFul
durationMillis = NANOSECONDS.toMillis(durationNanos),
status = when (status) {
AdbDeviceTest.Status.Passed -> HtmlFullTest.Status.Passed
- AdbDeviceTest.Status.Ignored -> HtmlFullTest.Status.Ignored
+ is AdbDeviceTest.Status.Ignored -> HtmlFullTest.Status.Ignored
is AdbDeviceTest.Status.Failed -> HtmlFullTest.Status.Failed
},
stacktrace = when (status) {
- is AdbDeviceTest.Status.Failed -> status.stacktrace
+ is AdbDeviceTest.Status.Ignored -> status.stacktrace
+ is AdbDeviceTest.Status.Failed -> status.stacktrace
else -> null
},
logcatPath = logcat.relativePathTo(htmlReportDir),
diff --git a/composer/src/test/kotlin/com/gojuno/composer/JUnitReportSpec.kt b/composer/src/test/kotlin/com/gojuno/composer/JUnitReportSpec.kt
index a33a14f..a10c9fe 100644
--- a/composer/src/test/kotlin/com/gojuno/composer/JUnitReportSpec.kt
+++ b/composer/src/test/kotlin/com/gojuno/composer/JUnitReportSpec.kt
@@ -58,7 +58,17 @@ class JUnitReportSpec : Spek({
adbDevice = adbDevice,
className = "test.class.name4",
testName = "test4",
- status = Ignored,
+ status = Ignored(""),
+ durationNanos = SECONDS.toNanos(0),
+ logcat = testFile(),
+ files = emptyList(),
+ screenshots = emptyList()
+ ),
+ AdbDeviceTest(
+ adbDevice = adbDevice,
+ className = "test.class.name5",
+ testName = "test5",
+ status = Ignored("multi\nline\nstacktrace"),
durationNanos = SECONDS.toNanos(0),
logcat = testFile(),
files = emptyList(),
@@ -66,7 +76,7 @@ class JUnitReportSpec : Spek({
)
),
passedCount = 2,
- ignoredCount = 1,
+ ignoredCount = 2,
failedCount = 1,
durationNanos = MILLISECONDS.toNanos(6250),
timestampMillis = 1490200150000
@@ -78,7 +88,7 @@ class JUnitReportSpec : Spek({
it("produces correct xml report") {
assertThat(outputFile.readText()).isEqualTo("""
-
+
@@ -92,6 +102,13 @@ class JUnitReportSpec : Spek({
+
+
+ multi
+ line
+ stacktrace
+
+
""".trimIndent() + "\n"
)