From 103138328d78c1208d0d971cc79fb38d200e96ec Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Fri, 25 May 2018 21:05:48 +0300 Subject: [PATCH] sm test runner: print text with ANSI colors when reading file (IDEA-CR-32979) --- .../testframework/CompositePrintable.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/platform/testRunner/src/com/intellij/execution/testframework/CompositePrintable.java b/platform/testRunner/src/com/intellij/execution/testframework/CompositePrintable.java index 2919fa9ff6c9..201d44540232 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/CompositePrintable.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/CompositePrintable.java @@ -16,6 +16,7 @@ package com.intellij.execution.testframework; import com.intellij.execution.filters.HyperlinkInfo; +import com.intellij.execution.process.ProcessOutputTypes; import com.intellij.execution.testframework.stacktrace.DiffHyperlink; import com.intellij.execution.testframework.ui.TestsOutputConsolePrinter; import com.intellij.execution.ui.ConsoleViewContentType; @@ -350,9 +351,7 @@ public class CompositePrintable extends UserDataHolderBase implements Printable, else { ConsoleViewContentType contentType = contentTypeByNameMap.getOrDefault(firstToken, ConsoleViewContentType.NORMAL_OUTPUT); String text = IOUtil.readString(reader); - if (text != null) { - printer.print(text, contentType); - } + printText(printer, text, contentType); } lineNum++; } @@ -374,6 +373,18 @@ public class CompositePrintable extends UserDataHolderBase implements Printable, } } + private void printText(Printer printer, String text, ConsoleViewContentType contentType) { + if (ConsoleViewContentType.NORMAL_OUTPUT.equals(contentType)) { + printer.printWithAnsiColoring(text, ProcessOutputTypes.STDOUT); + } + else if (ConsoleViewContentType.ERROR_OUTPUT.equals(contentType)) { + printer.printWithAnsiColoring(text, ProcessOutputTypes.STDERR); + } + else { + printer.print(text, contentType); + } + } + private boolean wasPrintableChanged(Printer printer) { return printer instanceof TestsOutputConsolePrinter && !((TestsOutputConsolePrinter)printer).isCurrent(CompositePrintable.this); }