Testing Emoji Handling and Rendering in Textualize/rich
This test suite validates the emoji handling functionality in Rich’s Python library, focusing on emoji creation, rendering, and variant handling. The tests verify core emoji operations including string representation, replacement, and variant selection.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
textualize/rich
tests/test_emoji.py
import pytest
from rich.emoji import Emoji, NoEmoji
from .render import render
def test_no_emoji():
with pytest.raises(NoEmoji):
Emoji("ambivalent_bunny")
def test_str_repr():
assert str(Emoji("pile_of_poo")) == "💩"
assert repr(Emoji("pile_of_poo")) == "<emoji 'pile_of_poo'>"
def test_replace():
assert Emoji.replace("my code is :pile_of_poo:") == "my code is 💩"
def test_render():
render_result = render(Emoji("pile_of_poo"))
assert render_result == "💩"
def test_variant():
print(repr(Emoji.replace(":warning:")))
assert Emoji.replace(":warning:") == "âš "
assert Emoji.replace(":warning-text:") == "âš " + "\uFE0E"
assert Emoji.replace(":warning-emoji:") == "âš " + "\uFE0F"
assert Emoji.replace(":warning-foo:") == ":warning-foo:"
def test_variant_non_default():
render_result = render(Emoji("warning", variant="emoji"))
assert render_result == "âš " + "\uFE0F"