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 {
|
override fun processStackTrace(stackTrace: String): String {
|
||||||
return stackTrace.lines()
|
return stackTrace.lines()
|
||||||
|
.map(::processName)
|
||||||
.joinToString("\n") { line ->
|
.joinToString("\n") { line ->
|
||||||
val index = line.indexOf(KARMA_SOURCE_MAP_DELIMETER)
|
val index = line.indexOf(KARMA_SOURCE_MAP_DELIMITER)
|
||||||
if (index == -1)
|
if (index == -1)
|
||||||
line
|
line
|
||||||
else
|
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 {
|
override fun getSuiteName(message: BaseTestSuiteMessage): String {
|
||||||
val src = message.suiteName.trim()
|
val src = message.suiteName.trim()
|
||||||
// example: "sample.a DeepPackageTest Inner.HeadlessChrome 74.0.3729 (Mac OS X 10.14.4)"
|
// 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 CHROME_CANARY_BIN = "CHROME_CANARY_BIN"
|
||||||
|
|
||||||
const val WEBPACK_PROTOCOL = "webpack://"
|
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()
|
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