run-tests: disable color in 'auto' mode on Windows if stdout is redirected
Differential Revision: https://phab.mercurial-scm.org/D10761
--- a/tests/run-tests.py Thu May 06 18:52:08 2021 -0400
+++ b/tests/run-tests.py Thu May 06 19:39:19 2021 -0400
@@ -2211,7 +2211,13 @@
self.faildata = {}
if options.color == 'auto':
- self.color = pygmentspresent and self.stream.isatty()
+ isatty = self.stream.isatty()
+ # For some reason, redirecting stdout on Windows disables the ANSI
+ # color processing of stderr, which is what is used to print the
+ # output. Therefore, both must be tty on Windows to enable color.
+ if os.name == 'nt':
+ isatty = isatty and sys.stdout.isatty()
+ self.color = pygmentspresent and isatty
elif options.color == 'never':
self.color = False
else: # 'always', for testing purposes