mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-25 13:13:48 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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 == ""
 |