mirror of
https://github.com/esphome/esphome.git
synced 2025-08-03 08:57:47 +00:00
[config] Fix reversion of excessive yaml output after error (#10043)
Co-authored-by: J. Nick Koston <nick@koston.org>
This commit is contained in:
parent
296442d8f1
commit
b1b0638fab
@ -37,6 +37,8 @@ class AnsiStyle(Enum):
|
||||
|
||||
|
||||
def color(col: AnsiFore, msg: str, reset: bool = True) -> str:
|
||||
if col == AnsiFore.KEEP:
|
||||
return msg
|
||||
s = col.value + msg
|
||||
if reset and col:
|
||||
s += AnsiStyle.RESET_ALL.value
|
||||
|
80
tests/unit_tests/test_log.py
Normal file
80
tests/unit_tests/test_log.py
Normal file
@ -0,0 +1,80 @@
|
||||
import pytest
|
||||
|
||||
from esphome.log import AnsiFore, AnsiStyle, color
|
||||
|
||||
|
||||
def test_color_keep_returns_unchanged_message() -> None:
|
||||
"""Test that AnsiFore.KEEP returns the message unchanged."""
|
||||
msg = "test message"
|
||||
result = color(AnsiFore.KEEP, msg)
|
||||
assert result == msg
|
||||
|
||||
|
||||
def test_color_keep_ignores_reset_parameter() -> None:
|
||||
"""Test that reset parameter is ignored when using AnsiFore.KEEP."""
|
||||
msg = "test message"
|
||||
result_with_reset = color(AnsiFore.KEEP, msg, reset=True)
|
||||
result_without_reset = color(AnsiFore.KEEP, msg, reset=False)
|
||||
assert result_with_reset == msg
|
||||
assert result_without_reset == msg
|
||||
|
||||
|
||||
def test_color_applies_color_code() -> None:
|
||||
"""Test that color codes are properly applied to messages."""
|
||||
msg = "test message"
|
||||
result = color(AnsiFore.RED, msg, reset=False)
|
||||
assert result == f"{AnsiFore.RED.value}{msg}"
|
||||
|
||||
|
||||
def test_color_applies_reset_when_requested() -> None:
|
||||
"""Test that RESET_ALL is added when reset=True."""
|
||||
msg = "test message"
|
||||
result = color(AnsiFore.GREEN, msg, reset=True)
|
||||
expected = f"{AnsiFore.GREEN.value}{msg}{AnsiStyle.RESET_ALL.value}"
|
||||
assert result == expected
|
||||
|
||||
|
||||
def test_color_no_reset_when_not_requested() -> None:
|
||||
"""Test that RESET_ALL is not added when reset=False."""
|
||||
msg = "test message"
|
||||
result = color(AnsiFore.BLUE, msg, reset=False)
|
||||
expected = f"{AnsiFore.BLUE.value}{msg}"
|
||||
assert result == expected
|
||||
|
||||
|
||||
def test_color_with_empty_message() -> None:
|
||||
"""Test color function with empty message."""
|
||||
result = color(AnsiFore.YELLOW, "", reset=True)
|
||||
expected = f"{AnsiFore.YELLOW.value}{AnsiStyle.RESET_ALL.value}"
|
||||
assert result == expected
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"col",
|
||||
[
|
||||
AnsiFore.BLACK,
|
||||
AnsiFore.RED,
|
||||
AnsiFore.GREEN,
|
||||
AnsiFore.YELLOW,
|
||||
AnsiFore.BLUE,
|
||||
AnsiFore.MAGENTA,
|
||||
AnsiFore.CYAN,
|
||||
AnsiFore.WHITE,
|
||||
AnsiFore.RESET,
|
||||
],
|
||||
)
|
||||
def test_all_ansi_colors(col: AnsiFore) -> None:
|
||||
"""Test that all AnsiFore colors work correctly."""
|
||||
msg = "test"
|
||||
result = color(col, msg, reset=True)
|
||||
expected = f"{col.value}{msg}{AnsiStyle.RESET_ALL.value}"
|
||||
assert result == expected
|
||||
|
||||
|
||||
def test_ansi_fore_keep_is_enum_member() -> None:
|
||||
"""Ensure AnsiFore.KEEP is an Enum member and evaluates to truthy."""
|
||||
assert isinstance(AnsiFore.KEEP, AnsiFore)
|
||||
# Enum members are truthy, even with empty string values
|
||||
assert bool(AnsiFore.KEEP) is True
|
||||
# But the value itself is still an empty string
|
||||
assert AnsiFore.KEEP.value == ""
|
Loading…
x
Reference in New Issue
Block a user