]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
tests: iptables-test: Fix conditional colors on stderr
authorPhil Sutter <phil@nwl.cc>
Wed, 15 Sep 2021 15:47:15 +0000 (17:47 +0200)
committerPhil Sutter <phil@nwl.cc>
Wed, 22 Sep 2021 21:51:07 +0000 (23:51 +0200)
Štěpán's patch to make colored output depend on whether output is a TTY
clashed with my change to print errors to stderr instead of stdout.

Fix this by telling maybe_colored() if it should print colors or not as
only caller knows where output is sent to.

Signed-off-by: Phil Sutter <phil@nwl.cc>
iptables-test.py

index a876f616dae4ccf7eafd3c654a07fe3b38cc4dbd..0ba3d36864fd762ea081c20a5b420820586c8f31 100755 (executable)
@@ -33,15 +33,16 @@ LOGFILE="/tmp/iptables-test.log"
 log_file = None
 
 STDOUT_IS_TTY = sys.stdout.isatty()
+STDERR_IS_TTY = sys.stderr.isatty()
 
-def maybe_colored(color, text):
+def maybe_colored(color, text, isatty):
     terminal_sequences = {
         'green': '\033[92m',
         'red': '\033[91m',
     }
 
     return (
-        terminal_sequences[color] + text + '\033[0m' if STDOUT_IS_TTY else text
+        terminal_sequences[color] + text + '\033[0m' if isatty else text
     )
 
 
@@ -49,7 +50,7 @@ def print_error(reason, filename=None, lineno=None):
     '''
     Prints an error with nice colors, indicating file and line number.
     '''
-    print(filename + ": " + maybe_colored('red', "ERROR") +
+    print(filename + ": " + maybe_colored('red', "ERROR", STDERR_IS_TTY) +
         ": line %d (%s)" % (lineno, reason), file=sys.stderr)
 
 
@@ -288,7 +289,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 + ": " + maybe_colored('green', "OK"))
+        print(filename + ": " + maybe_colored('green', "OK", STDOUT_IS_TTY))
 
     f.close()
     return tests, passed