From: Štěpán Němec Date: Thu, 2 Sep 2021 11:33:07 +0000 (+0200) Subject: iptables-test.py: print with color escapes only when stdout isatty X-Git-Tag: v1.8.8~124 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b714d45dc4c2423d4df4cbf7ccf238ec441675ef;p=thirdparty%2Fiptables.git iptables-test.py: print with color escapes only when stdout isatty When the output doesn't go to a terminal (typical case: log files), the escape sequences are just noise. Signed-off-by: Štěpán Němec Signed-off-by: Phil Sutter --- diff --git a/iptables-test.py b/iptables-test.py index 5eafe589..a876f616 100755 --- a/iptables-test.py +++ b/iptables-test.py @@ -32,22 +32,25 @@ EXTENSIONS_PATH = "extensions" LOGFILE="/tmp/iptables-test.log" log_file = None +STDOUT_IS_TTY = sys.stdout.isatty() -class Colors: - HEADER = '\033[95m' - BLUE = '\033[94m' - GREEN = '\033[92m' - YELLOW = '\033[93m' - RED = '\033[91m' - ENDC = '\033[0m' +def maybe_colored(color, text): + terminal_sequences = { + 'green': '\033[92m', + 'red': '\033[91m', + } + + return ( + terminal_sequences[color] + text + '\033[0m' if STDOUT_IS_TTY else text + ) def print_error(reason, filename=None, lineno=None): ''' Prints an error with nice colors, indicating file and line number. ''' - print(filename + ": " + Colors.RED + "ERROR" + - Colors.ENDC + ": line %d (%s)" % (lineno, reason), file=sys.stderr) + print(filename + ": " + maybe_colored('red', "ERROR") + + ": line %d (%s)" % (lineno, reason), file=sys.stderr) def delete_rule(iptables, rule, filename, lineno): @@ -285,7 +288,7 @@ def run_test_file(filename, netns): if netns: execute_cmd("ip netns del ____iptables-container-test", filename, 0) if total_test_passed: - print(filename + ": " + Colors.GREEN + "OK" + Colors.ENDC) + print(filename + ": " + maybe_colored('green', "OK")) f.close() return tests, passed