1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
from __future__ import annotations
import pytest
from markupsafe import escape
from markupsafe import Markup
@pytest.mark.parametrize(
("value", "expect"),
(
# empty
("", ""),
# ascii
("abcd&><'\"efgh", "abcd&><'"efgh"),
("&><'\"efgh", "&><'"efgh"),
("abcd&><'\"", "abcd&><'""),
# 2 byte
("こんにちは&><'\"こんばんは", "こんにちは&><'"こんばんは"),
("&><'\"こんばんは", "&><'"こんばんは"),
("こんにちは&><'\"", "こんにちは&><'""),
# 4 byte
(
"\U0001f363\U0001f362&><'\"\U0001f37a xyz",
"\U0001f363\U0001f362&><'"\U0001f37a xyz",
),
("&><'\"\U0001f37a xyz", "&><'"\U0001f37a xyz"),
("\U0001f363\U0001f362&><'\"", "\U0001f363\U0001f362&><'""),
),
)
def test_escape(value: str, expect: str) -> None:
assert escape(value) == Markup(expect)
|