Thread RP_DEBUG-driven logging through input, detection, rendering, and pager decisions so CLI behavior is inspectable without polluting stdout. Add focused coverage for debug wiring, env parsing, and stderr-only output.
61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
"""Tests for debug helpers."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import io
|
|
|
|
from rich.console import Console
|
|
|
|
from rp.debug import DEBUG_ENV_VAR, env_debug_enabled, log_debug, make_debug_logger
|
|
|
|
|
|
class TestEnvDebugEnabled:
|
|
"""Environment-based debug mode toggles."""
|
|
|
|
def test_disabled_by_default(self) -> None:
|
|
assert env_debug_enabled({}) is False
|
|
|
|
def test_false_like_values_disable_debug(self) -> None:
|
|
for value in ["", "0", "false", "no", "off"]:
|
|
assert env_debug_enabled({DEBUG_ENV_VAR: value}) is False
|
|
|
|
def test_false_like_values_are_trimmed_and_case_insensitive(self) -> None:
|
|
for value in [" False ", "\tNO\n", " Off "]:
|
|
assert env_debug_enabled({DEBUG_ENV_VAR: value}) is False
|
|
|
|
def test_truthy_values_enable_debug(self) -> None:
|
|
assert env_debug_enabled({DEBUG_ENV_VAR: "1"}) is True
|
|
assert env_debug_enabled({DEBUG_ENV_VAR: "true"}) is True
|
|
|
|
def test_truthy_values_are_trimmed_and_case_insensitive(self) -> None:
|
|
for value in [" TRUE ", " Yes ", "\ton\n"]:
|
|
assert env_debug_enabled({DEBUG_ENV_VAR: value}) is True
|
|
|
|
|
|
class TestMakeDebugLogger:
|
|
"""Console-backed debug logger output."""
|
|
|
|
def test_logs_visible_prefix(self) -> None:
|
|
stream = io.StringIO()
|
|
console = Console(file=stream, force_terminal=False)
|
|
logger = make_debug_logger(console, enabled=True)
|
|
|
|
assert logger is not None
|
|
logger("hello")
|
|
|
|
assert stream.getvalue() == "[rp debug] hello\n"
|
|
|
|
|
|
class TestLogDebug:
|
|
"""Nil-safe debug logger forwarding."""
|
|
|
|
def test_noop_when_logger_is_none(self) -> None:
|
|
log_debug(None, "hello")
|
|
|
|
def test_forwards_to_logger(self) -> None:
|
|
messages: list[str] = []
|
|
|
|
log_debug(messages.append, "hello")
|
|
|
|
assert messages == ["hello"]
|