On Wed, Feb 23, 2022 at 9:53 PM Kees Cook keescook@chromium.org wrote:
Filling log files with color codes makes diffs and other comparisons difficult. Only emit vt100 codes when the stdout is a TTY.
Cc: Brendan Higgins brendanhiggins@google.com Cc: linux-kselftest@vger.kernel.org Cc: kunit-dev@googlegroups.com Signed-off-by: Kees Cook keescook@chromium.org
tools/testing/kunit/kunit_parser.py | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/tools/testing/kunit/kunit_parser.py b/tools/testing/kunit/kunit_parser.py index 05ff334761dd..807ed2bd6832 100644 --- a/tools/testing/kunit/kunit_parser.py +++ b/tools/testing/kunit/kunit_parser.py @@ -11,6 +11,7 @@
from __future__ import annotations import re +import sys
import datetime from enum import Enum, auto @@ -503,14 +504,20 @@ RESET = '\033[0;0m'
def red(text: str) -> str: """Returns inputted string with red color code."""
if not sys.stdout.isatty():
return text
I'd been thinking about doing this for a while. I'd just gotten used to removing them via sed, or ending pipes with less -R. I totally agree it's for the best that colors be turned off by default when piping.
My hesitation was whether we'd want to introduce a flag like grep et al have. I.e. --color=auto/always/etc.
Pros: * consistency with grep, maybe less surprise * allows wrappers around kunit.py to redirect output and still show color * this is very niche and I know it. But I happen to own such a wrapper :)
Cons: * an extra flag that's very niche * I'm likely the only person to have ever used `kunit.py run | ... | less -R` * the logic to check for coloring becomes more complicated, need to add a helper
I'm fine if we just stick with this simpler approach or do it later. My aforementioned wrapper only redirects stdout when necessary anyways.
return '\033[1;31m' + text + RESET
def yellow(text: str) -> str: """Returns inputted string with yellow color code."""
if not sys.stdout.isatty():
return text return '\033[1;33m' + text + RESET
def green(text: str) -> str: """Returns inputted string with green color code."""
if not sys.stdout.isatty():
return text return '\033[1;32m' + text + RESET
ANSI_LEN = len(red(''))
2.30.2
-- You received this message because you are subscribed to the Google Groups "KUnit Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to kunit-dev+unsubscribe@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/kunit-dev/20220224055350.1854078-1-keescoo....