mirror of https://github.com/Textualize/rich.git
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
import io
|
|
import os
|
|
import tempfile
|
|
|
|
import pytest
|
|
|
|
from rich.style import Style
|
|
from rich.theme import Theme, ThemeStack, ThemeStackError
|
|
|
|
|
|
def test_inherit():
|
|
theme = Theme({"warning": "red"})
|
|
assert theme.styles["warning"] == Style(color="red")
|
|
assert theme.styles["dim"] == Style(dim=True)
|
|
|
|
|
|
def test_config():
|
|
theme = Theme({"warning": "red"})
|
|
config = theme.config
|
|
assert "warning = red\n" in config
|
|
|
|
|
|
def test_from_file():
|
|
theme = Theme({"warning": "red"})
|
|
text_file = io.StringIO()
|
|
text_file.write(theme.config)
|
|
text_file.seek(0)
|
|
|
|
load_theme = Theme.from_file(text_file)
|
|
assert theme.styles == load_theme.styles
|
|
|
|
|
|
def test_read():
|
|
theme = Theme({"warning": "red"})
|
|
with tempfile.TemporaryDirectory("richtheme") as name:
|
|
filename = os.path.join(name, "theme.cfg")
|
|
with open(filename, "wt") as write_theme:
|
|
write_theme.write(theme.config)
|
|
load_theme = Theme.read(filename)
|
|
assert theme.styles == load_theme.styles
|
|
|
|
|
|
def test_theme_stack():
|
|
theme = Theme({"warning": "red"})
|
|
stack = ThemeStack(theme)
|
|
assert stack.get("warning") == Style.parse("red")
|
|
new_theme = Theme({"warning": "bold yellow"})
|
|
stack.push_theme(new_theme)
|
|
assert stack.get("warning") == Style.parse("bold yellow")
|
|
stack.pop_theme()
|
|
assert stack.get("warning") == Style.parse("red")
|
|
with pytest.raises(ThemeStackError):
|
|
stack.pop_theme()
|