74 lines
2.4 KiB
Python
74 lines
2.4 KiB
Python
import pytest
|
|
|
|
from wasabi.util import color, diff_strings, format_repr, locale_escape, wrap
|
|
|
|
|
|
def test_color():
|
|
assert color("test", fg="green") == "\x1b[38;5;2mtest\x1b[0m"
|
|
assert color("test", fg=4) == "\x1b[38;5;4mtest\x1b[0m"
|
|
assert color("test", bold=True) == "\x1b[1mtest\x1b[0m"
|
|
assert color("test", fg="red", underline=True) == "\x1b[4;38;5;1mtest\x1b[0m"
|
|
assert (
|
|
color("test", fg=7, bg="red", bold=True) == "\x1b[1;38;5;7;48;5;1mtest\x1b[0m"
|
|
)
|
|
|
|
|
|
def test_wrap():
|
|
text = "Hello world, this is a test."
|
|
assert wrap(text, indent=0) == text
|
|
assert wrap(text, indent=4) == " Hello world, this is a test."
|
|
assert wrap(text, wrap_max=10, indent=0) == "Hello\nworld,\nthis is a\ntest."
|
|
assert (
|
|
wrap(text, wrap_max=5, indent=2)
|
|
== " Hello\n world,\n this\n is\n a\n test."
|
|
)
|
|
|
|
|
|
def test_format_repr():
|
|
obj = {"hello": "world", "test": 123}
|
|
formatted = format_repr(obj)
|
|
assert formatted.replace("u'", "'") in [
|
|
"{'hello': 'world', 'test': 123}",
|
|
"{'test': 123, 'hello': 'world'}",
|
|
]
|
|
formatted = format_repr(obj, max_len=10)
|
|
assert formatted.replace("u'", "'") in [
|
|
"{'hel ... 123}",
|
|
"{'tes ... rld'}",
|
|
"{'te ... rld'}",
|
|
]
|
|
formatted = format_repr(obj, max_len=10, ellipsis="[...]")
|
|
assert formatted.replace("u'", "'") in [
|
|
"{'hel [...] 123}",
|
|
"{'tes [...] rld'}",
|
|
"{'te [...] rld'}",
|
|
]
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"text,non_ascii",
|
|
[
|
|
("abc", ["abc"]),
|
|
("\u2714 abc", ["? abc"]),
|
|
("👻", ["??", "?"]), # On Python 3 windows, this becomes "?" instead of "??"
|
|
],
|
|
)
|
|
def test_locale_escape(text, non_ascii):
|
|
result = locale_escape(text)
|
|
assert result == text or result in non_ascii
|
|
print(result)
|
|
|
|
|
|
def test_diff_strings():
|
|
a = "hello\nworld\nwide\nweb"
|
|
b = "yo\nwide\nworld\nweb"
|
|
expected = "\x1b[38;5;16;48;5;2myo\x1b[0m\n\x1b[38;5;16;48;5;2mwide\x1b[0m\n\x1b[38;5;16;48;5;1mhello\x1b[0m\nworld\n\x1b[38;5;16;48;5;1mwide\x1b[0m\nweb"
|
|
assert diff_strings(a, b) == expected
|
|
|
|
|
|
def test_diff_strings_with_symbols():
|
|
a = "hello\nworld\nwide\nweb"
|
|
b = "yo\nwide\nworld\nweb"
|
|
expected = "\x1b[38;5;16;48;5;2m+ yo\x1b[0m\n\x1b[38;5;16;48;5;2m+ wide\x1b[0m\n\x1b[38;5;16;48;5;1m- hello\x1b[0m\nworld\n\x1b[38;5;16;48;5;1m- wide\x1b[0m\nweb"
|
|
assert diff_strings(a, b, add_symbols=True) == expected
|