rich/tests/test_spinner.py

43 lines
1022 B
Python

from time import time
import pytest
from rich.console import Console
from rich.measure import Measurement
from rich.spinner import Spinner
def test_spinner_create():
spinner = Spinner("dots")
assert spinner.time == 0.0
with pytest.raises(KeyError):
Spinner("foobar")
def test_spinner_render():
time = 0.0
def get_time():
nonlocal time
return time
console = Console(
width=80, color_system=None, force_terminal=True, get_time=get_time
)
console.begin_capture()
spinner = Spinner("dots", "Foo")
console.print(spinner)
time += 80 / 1000
console.print(spinner)
result = console.end_capture()
print(repr(result))
expected = "⠋ Foo\n⠙ Foo\n"
assert result == expected
def test_rich_measure():
console = Console(width=80, color_system=None, force_terminal=True)
spinner = Spinner("dots", "Foo")
min_width, max_width = Measurement.get(console, spinner, 80)
assert min_width == 3
assert max_width == 5