2020-04-26 15:28:18 +00:00
|
|
|
import io
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
2019-12-26 16:51:47 +00:00
|
|
|
from rich.color import ColorSystem
|
2020-03-13 14:57:02 +00:00
|
|
|
from rich.console import Console, ConsoleOptions
|
2020-04-26 15:28:18 +00:00
|
|
|
from rich import errors
|
|
|
|
from rich.segment import Segment
|
2019-12-26 16:51:47 +00:00
|
|
|
from rich.style import Style
|
2020-04-26 15:28:18 +00:00
|
|
|
from rich.theme import Theme
|
2019-12-26 16:51:47 +00:00
|
|
|
|
|
|
|
|
|
|
|
def test_console_options_update():
|
|
|
|
options = ConsoleOptions(
|
|
|
|
min_width=10, max_width=20, is_terminal=False, encoding="utf-8"
|
|
|
|
)
|
|
|
|
options1 = options.update(width=15)
|
|
|
|
assert options1.min_width == 15 and options1.max_width == 15
|
|
|
|
|
|
|
|
options2 = options.update(min_width=5, max_width=15, justify="right")
|
|
|
|
assert (
|
|
|
|
options2.min_width == 5
|
|
|
|
and options2.max_width == 15
|
|
|
|
and options2.justify == "right"
|
|
|
|
)
|
|
|
|
|
|
|
|
options_copy = options.update()
|
|
|
|
assert options_copy == options and options_copy is not options
|
|
|
|
|
|
|
|
|
|
|
|
def test_init():
|
|
|
|
console = Console(color_system=None)
|
|
|
|
assert console._color_system == None
|
|
|
|
console = Console(color_system="standard")
|
|
|
|
assert console._color_system == ColorSystem.STANDARD
|
|
|
|
console = Console(color_system="auto")
|
|
|
|
|
|
|
|
|
|
|
|
def test_size():
|
|
|
|
console = Console()
|
|
|
|
w, h = console.size
|
|
|
|
assert console.width == w
|
|
|
|
|
|
|
|
console = Console(width=99, height=101)
|
|
|
|
w, h = console.size
|
|
|
|
assert w == 99 and h == 101
|
2020-04-02 15:59:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
def test_repr():
|
|
|
|
console = Console()
|
2020-04-26 15:28:18 +00:00
|
|
|
assert isinstance(repr(console), str)
|
|
|
|
assert isinstance(str(console), str)
|
|
|
|
|
|
|
|
|
|
|
|
def test_print():
|
|
|
|
console = Console(file=io.StringIO(), color_system="truecolor")
|
|
|
|
console.print("foo")
|
|
|
|
assert console.file.getvalue() == "foo\n"
|
|
|
|
|
|
|
|
|
|
|
|
def test_print_style():
|
|
|
|
console = Console(file=io.StringIO(), color_system="truecolor")
|
|
|
|
console.print("foo", style="bold")
|
|
|
|
assert console.file.getvalue() == "\x1b[1mfoo\x1b[0m\n"
|
|
|
|
|
|
|
|
|
|
|
|
def test_show_cursor():
|
|
|
|
console = Console(file=io.StringIO())
|
|
|
|
console.show_cursor(False)
|
|
|
|
console.print("foo")
|
|
|
|
console.show_cursor(True)
|
|
|
|
assert console.file.getvalue() == "\x1b[?25lfoo\n\x1b[?25h"
|
|
|
|
|
|
|
|
|
|
|
|
def test_get_style():
|
|
|
|
console = Console()
|
|
|
|
console.get_style("repr.brace") == Style(bold=True)
|
|
|
|
|
|
|
|
|
|
|
|
def test_get_style_error():
|
|
|
|
console = Console()
|
|
|
|
with pytest.raises(errors.MissingStyle):
|
|
|
|
console.get_style("nosuchstyle")
|
|
|
|
with pytest.raises(errors.MissingStyle):
|
|
|
|
console.get_style("foo bar")
|