in intellij-plugin/Edu-Python/src/com/jetbrains/edu/python/learning/run/PyTestEventsConverter.kt [28:72]
override fun processServiceMessages(text: @Nls String, outputType: Key<*>, visitor: ServiceMessageVisitor): Boolean {
val messages = mutableListOf<ServiceMessageBuilder>()
val processor: (TestMessage) -> Unit = { message ->
when (message) {
is TestMessage.TextLine -> {
messages += if (ProcessOutputType.isStdout(outputType)) {
createTestStdOutMessage(message.text)
} else {
createTestStdErrMessage(message.text)
}
}
is TestMessage.Ok -> {
val nodeId = nextId++
messages += createTestStartedMessage(nodeId, message.testName)
messages += createTestFinishedMessage(nodeId, message.testName)
}
is TestMessage.Failed -> {
val nodeId = nextId++
messages += createTestStartedMessage(nodeId, message.testName)
messages += createTestFailedMessage(nodeId, message)
messages += createTestFinishedMessage(nodeId, message.testName)
}
else -> Unit
}
}
if (!isStarted) {
messages += createTestSuiteStartedMessage()
isStarted = true
}
parser.processMessage(text, processor)
if (getProcessFinishedMessage().toRegex() in text) {
if (nextId == 2) {
// `nextId == 2` means that converter didn't receive any test result
val failedMessage = TestMessage.Failed(ROOT_SUITE_NAME, CheckResult.noTestsRun.message)
messages += createTestFailedMessage(ROOT_SUIT_ID.toInt(), failedMessage)
}
messages += createTestSuiteFinishedMessage()
}
for (message in messages) {
super.processServiceMessages(message.toString(), outputType, visitor)
}
return true
}