Process stack trace for karma

This commit is contained in:
Ilya Goncharov
2019-09-27 01:04:53 +03:00
parent 7010c03706
commit 2ac24efc8b
@@ -352,8 +352,9 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF
override fun processStackTrace(stackTrace: String): String {
return stackTrace.lines()
.map(::processName)
.joinToString("\n") { line ->
val index = line.indexOf(KARMA_SOURCE_MAP_DELIMETER)
val index = line.indexOf(KARMA_SOURCE_MAP_DELIMITER)
if (index == -1)
line
else
@@ -364,6 +365,31 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF
}
private fun processName(line: String): String {
// example: "at MyTest../kotlin/check-js-test-test.js.MyTest.foo (/src/test/kotlin/MyTest.kt:7:8)"
// should be "at MyTest.foo (/src/test/kotlin/MyTest.kt:7:8)"
val stackTraceDelimiter = line.indexOf(STACK_TRACE_DELIMITER)
val webpackLocalDelimiter = line.indexOf(WEBPACK_LOCAL_DELIMITER)
if (stackTraceDelimiter == -1 || webpackLocalDelimiter == -1) {
return line
}
val traceStartIndex = stackTraceDelimiter + STACK_TRACE_DELIMITER.length
val name = line.substring(
traceStartIndex,
webpackLocalDelimiter
) // MyTest
val fileStart = line.indexOf("(")
val fullJsName = line.substring(webpackLocalDelimiter, fileStart) // ../kotlin/check-js-test-test.js.MyTest.foo
val nameIndex = fullJsName.indexOf(name)
if (nameIndex == -1) {
return line
}
return line.replaceRange(traceStartIndex, fileStart, fullJsName.substring(nameIndex))
}
override fun getSuiteName(message: BaseTestSuiteMessage): String {
val src = message.suiteName.trim()
// example: "sample.a DeepPackageTest Inner.HeadlessChrome 74.0.3729 (Mac OS X 10.14.4)"
@@ -420,7 +446,10 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF
const val CHROME_CANARY_BIN = "CHROME_CANARY_BIN"
const val WEBPACK_PROTOCOL = "webpack://"
const val KARMA_SOURCE_MAP_DELIMETER = " <-"
const val KARMA_SOURCE_MAP_DELIMITER = " <-"
const val STACK_TRACE_DELIMITER = "at "
const val WEBPACK_LOCAL_DELIMITER = ".."
val KARMA_PROBLEM = "(?m)^.*\\d{2} \\d{2} \\d{4,} \\d{2}:\\d{2}:\\d{2}.\\d{3}:(ERROR|WARN) \\[.*]: (.*)\$".toRegex()
}