Testing Status Component Rendering and Updates in Textualize/rich
A comprehensive test suite for the Rich library’s Status component, focusing on status rendering, spinner functionality, and console output validation. These tests verify the core functionality of status updates and spinner animations in the Rich text and styling system.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
textualize/rich
tests/test_status.py
from time import sleep
from rich.console import Console
from rich.spinner import Spinner
from rich.status import Status
def test_status():
console = Console(
color_system=None, width=80, legacy_windows=False, get_time=lambda: 0.0
)
status = Status("foo", console=console)
assert status.console == console
previous_status_renderable = status.renderable
status.update(status="bar", spinner_style="red", speed=2.0)
assert previous_status_renderable == status.renderable
assert isinstance(status.renderable, Spinner)
status.update(spinner="dots2")
assert previous_status_renderable != status.renderable
# TODO: Testing output is tricky with threads
with status:
sleep(0.2)
def test_renderable():
console = Console(
color_system=None, width=80, legacy_windows=False, get_time=lambda: 0.0
)
status = Status("foo", console=console)
console.begin_capture()
console.print(status)
assert console.end_capture() == "⠋ foo
"