]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests: net: py: color the basics in the output
authorJakub Kicinski <kuba@kernel.org>
Thu, 2 Apr 2026 21:54:44 +0000 (14:54 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 7 Apr 2026 00:47:59 +0000 (17:47 -0700)
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 <sdf@fomichev.me>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Acked-by: Joe Damato <joe@dama.to>
Link: https://patch.msgid.link/20260402215444.1589893-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/lib/py/ksft.py

index 6cdfb8afccb56cbd7ff45d2192d8ea30fd8ccc50..7b8af463e35d20d5463dd47047b20aedd3468a0f 100644 (file)
@@ -2,6 +2,7 @@
 
 import functools
 import inspect
+import os
 import signal
 import sys
 import time
@@ -31,6 +32,17 @@ class KsftTerminate(KeyboardInterrupt):
     pass
 
 
+@functools.lru_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 @@ def ktap_result(ok, cnt=1, case_name="", comment=""):
         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)