From 03fb18109fb0db2522f36309242d16d0f83f17d2 Mon Sep 17 00:00:00 2001 From: Nasser Grainawi Date: Wed, 15 Apr 2026 10:50:05 -0700 Subject: [PATCH] color: type SetDefaultColoring and drop bool states Also add a test fixture to always disable coloring so that we get reproducible test behavior. The few tests that want to check color behavior (e.g. test_color.py) can still reset/change color values as needed. Change-Id: I1808139a63e0862c29bf81d7097e885ca8561040 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/573621 Reviewed-by: Gavin Mak Reviewed-by: Mike Frysinger Commit-Queue: Nasser Grainawi Tested-by: Nasser Grainawi --- color.py | 7 ++++--- tests/conftest.py | 11 +++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/color.py b/color.py index 9d0ce7c36..03fb65537 100644 --- a/color.py +++ b/color.py @@ -14,6 +14,7 @@ import os import sys +from typing import Optional import pager @@ -84,7 +85,7 @@ def _Color(fg=None, bg=None, attr=None): DEFAULT = None -def SetDefaultColoring(state): +def SetDefaultColoring(state: Optional[str]) -> None: """Set coloring behavior to |state|. This is useful for overriding config options via the command line. @@ -97,9 +98,9 @@ def SetDefaultColoring(state): state = state.lower() if state in ("auto",): DEFAULT = state - elif state in ("always", "yes", "true", True): + elif state in ("always", "yes", "true"): DEFAULT = "always" - elif state in ("never", "no", "false", False): + elif state in ("never", "no", "false"): DEFAULT = "never" diff --git a/tests/conftest.py b/tests/conftest.py index a13edd7af..ce3c3d6ce 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -18,6 +18,7 @@ import pathlib import pytest +import color import platform_utils import repo_trace @@ -28,6 +29,16 @@ def disable_repo_trace(tmp_path): repo_trace._TRACE_FILE = str(tmp_path / "TRACE_FILE_from_test") +@pytest.fixture(autouse=True) +def restore_default_coloring() -> None: + """Force disable color for reproducible test behavior. + + The few tests that cover color behavior can still reset/change the color as + needed. + """ + color.SetDefaultColoring("never") + + # adapted from pytest-home 0.5.1 def _set_home(monkeypatch, path: pathlib.Path): """