Process stack trace for karma
This commit is contained in:
+31
-2
@@ -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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user