Parse browser output to log

This commit is contained in:
Ilya Goncharov
2019-09-10 12:19:11 +03:00
parent c8d087d744
commit 3d67b952f8
2 changed files with 38 additions and 8 deletions
@@ -99,8 +99,8 @@ internal open class TCServiceMessagesClient(
afterMessage = false
}
protected open fun printNonTestOutput(actualText: String) {
print(actualText)
protected open fun printNonTestOutput(text: String) {
print(text)
}
protected open val testNameSuffix: String?
@@ -301,15 +301,28 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF
override fun createClient(testResultProcessor: TestResultProcessor, log: Logger) =
object : TCServiceMessagesClient(testResultProcessor, clientSettings, log) {
override fun printNonTestOutput(actualText: String) {
val value = actualText.trimEnd()
suppressedOutput.appendln(value)
progressLogger.progress(value)
}
val baseTestNameSuffix get() = settings.testNameSuffix
override var testNameSuffix: String? = baseTestNameSuffix
lateinit var clientId: String
override fun printNonTestOutput(text: String) {
val value = text.trimEnd()
progressLogger.progress(value)
if (text.contains(CLIENT_ID_MARKER)) {
clientId = text
.substringBeforeLast("]")
.substringAfterLast("[")
}
if (::clientId.isInitialized && text.startsWith(clientId)) {
parseConsole(text)
} else {
suppressedOutput.appendln(value)
}
}
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)"
@@ -335,6 +348,20 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF
return rawSuiteNameOnly.replace(" ", ".") // sample.a.DeepPackageTest.Inner
}
private fun parseConsole(text: String) {
val logLevel = text
.substringAfter(clientId)
.substringBefore(":")
.trim()
return when (logLevel) {
"WARN" -> log.warn(text)
"ERROR" -> log.error(text)
"DEBUG" -> log.debug(text)
else -> log.info(text)
}
}
}
}
}
@@ -354,5 +381,8 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF
companion object {
const val CHROME_BIN = "CHROME_BIN"
const val CHROME_CANARY_BIN = "CHROME_CANARY_BIN"
const val CLIENT_ID_MARKER = "Connected on socket"
}
}