Patchwork D10761: run-tests: disable color in 'auto' mode on Windows if stdout is redirected

login
register
mail settings
Submitter phabricator
Date May 20, 2021, 8:17 p.m.
Message ID <differential-rev-PHID-DREV-qetuokawebqu7rln2vkj-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/49081/
State Superseded
Headers show

Comments

phabricator - May 20, 2021, 8:17 p.m.
mharbison72 created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D10761

AFFECTED FILES
  tests/run-tests.py

CHANGE DETAILS




To: mharbison72, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -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