Sometimes it's hard to spot the ok / not ok lines in the output. This is especially true for the GRO tests which retries a lot so there's a wall of non-fatal output printed.
Try to color the crucial lines green / red / yellow when running in a terminal. Acked-by: Stanislav Fomichev <[email protected]> Reviewed-by: Willem de Bruijn <[email protected]> Acked-by: Joe Damato <[email protected]> Signed-off-by: Jakub Kicinski <[email protected]> --- v2: - use functools instead of open coding the caching (pylint) v1: https://lore.kernel.org/[email protected] CC: [email protected] CC: [email protected] CC: [email protected] --- tools/testing/selftests/net/lib/py/ksft.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tools/testing/selftests/net/lib/py/ksft.py b/tools/testing/selftests/net/lib/py/ksft.py index 6cdfb8afccb5..7b8af463e35d 100644 --- a/tools/testing/selftests/net/lib/py/ksft.py +++ b/tools/testing/selftests/net/lib/py/ksft.py @@ -2,6 +2,7 @@ import functools import inspect +import os import signal import sys import time @@ -31,6 +32,17 @@ KSFT_DISRUPTIVE = True pass [email protected]_cache() +def _ksft_supports_color(): + if os.environ.get("NO_COLOR") is not None: + return False + if not hasattr(sys.stdout, "isatty") or not sys.stdout.isatty(): + return False + if os.environ.get("TERM") == "dumb": + return False + return True + + def ksft_pr(*objs, **kwargs): """ Print logs to stdout. @@ -165,6 +177,14 @@ KSFT_DISRUPTIVE = True res += "." + case_name if comment: res += " # " + comment + if _ksft_supports_color(): + if comment.startswith(("SKIP", "XFAIL")): + color = "\033[33m" + elif ok: + color = "\033[32m" + else: + color = "\033[31m" + res = color + res + "\033[0m" print(res, flush=True) -- 2.53.0
