From e17dda179c5fe95d64cb4c2053adca326c45e614 Mon Sep 17 00:00:00 2001 From: Antoine Musso Date: Thu, 14 Dec 2023 22:57:54 +0100 Subject: [PATCH] Always pass FORCE_COLOR & NO_COLOR to the environment The environment variables `FORCE_COLOR` and `NO_COLOR`are a popular way to force or disable color output. An example usage is pytest being run under a CI system. --- docs/changelog/3171.feature.rst | 1 + src/tox/tox_env/api.py | 2 ++ tests/session/cmd/test_show_config.py | 7 +++++-- 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 docs/changelog/3171.feature.rst diff --git a/docs/changelog/3171.feature.rst b/docs/changelog/3171.feature.rst new file mode 100644 index 000000000..58b754d6a --- /dev/null +++ b/docs/changelog/3171.feature.rst @@ -0,0 +1 @@ +Always pass ``FORCE_COLOR`` and ``NO_COLOR`` to the environment diff --git a/src/tox/tox_env/api.py b/src/tox/tox_env/api.py index 45bbc5ce1..73b42ad10 100644 --- a/src/tox/tox_env/api.py +++ b/src/tox/tox_env/api.py @@ -219,6 +219,8 @@ def _default_pass_env(self) -> list[str]: "LD_LIBRARY_PATH", # location of libs "LDFLAGS", # linker flags "HOME", # needed for `os.path.expanduser()` on non-Windows systems + "FORCE_COLOR", # force color output + "NO_COLOR", # disable color output ] if sys.stdout.isatty(): # if we're on a interactive shell pass on the TERM env.append("TERM") diff --git a/tests/session/cmd/test_show_config.py b/tests/session/cmd/test_show_config.py index f5829294b..fbb0aa0ba 100644 --- a/tests/session/cmd/test_show_config.py +++ b/tests/session/cmd/test_show_config.py @@ -123,8 +123,11 @@ def test_pass_env_config_default(tox_project: ToxProjectCreator, stdout_is_atty: + (["APPDATA"] if is_win else []) + ["CC", "CCSHARED", "CFLAGS"] + (["COMSPEC"] if is_win else []) - + ["CPPFLAGS", "CURL_CA_BUNDLE", "CXX", "HOME", "LANG", "LANGUAGE", "LDFLAGS", "LD_LIBRARY_PATH"] - + (["MSYSTEM", "NUMBER_OF_PROCESSORS", "PATHEXT"] if is_win else []) + + ["CPPFLAGS", "CURL_CA_BUNDLE", "CXX", "FORCE_COLOR", "HOME", "LANG"] + + ["LANGUAGE", "LDFLAGS", "LD_LIBRARY_PATH"] + + (["MSYSTEM"] if is_win else []) + + ["NO_COLOR"] + + (["NUMBER_OF_PROCESSORS", "PATHEXT"] if is_win else []) + ["PIP_*", "PKG_CONFIG", "PKG_CONFIG_PATH", "PKG_CONFIG_SYSROOT_DIR"] + (["PROCESSOR_ARCHITECTURE"] if is_win else []) + (["PROGRAMDATA"] if is_win else [])