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 <gavinmak@google.com> Reviewed-by: Mike Frysinger <vapier@google.com> Commit-Queue: Nasser Grainawi <nasser.grainawi@oss.qualcomm.com> Tested-by: Nasser Grainawi <nasser.grainawi@oss.qualcomm.com>
diff --git a/color.py b/color.py index 9d0ce7c..03fb655 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 @@ 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 @@ 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 a13edd7..ce3c3d6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py
@@ -18,6 +18,7 @@ import pytest +import color import platform_utils import repo_trace @@ -28,6 +29,16 @@ 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): """