diff options
author | shadchin <shadchin@yandex-team.ru> | 2022-02-10 16:44:39 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:44:39 +0300 |
commit | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (patch) | |
tree | 64175d5cadab313b3e7039ebaa06c5bc3295e274 /contrib/python/MarkupSafe/py3/tests/test_markupsafe.py | |
parent | 2598ef1d0aee359b4b6d5fdd1758916d5907d04f (diff) | |
download | ydb-e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0.tar.gz |
Restoring authorship annotation for <shadchin@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/python/MarkupSafe/py3/tests/test_markupsafe.py')
-rw-r--r-- | contrib/python/MarkupSafe/py3/tests/test_markupsafe.py | 370 |
1 files changed, 185 insertions, 185 deletions
diff --git a/contrib/python/MarkupSafe/py3/tests/test_markupsafe.py b/contrib/python/MarkupSafe/py3/tests/test_markupsafe.py index a4ba637fe0..fcd934702e 100644 --- a/contrib/python/MarkupSafe/py3/tests/test_markupsafe.py +++ b/contrib/python/MarkupSafe/py3/tests/test_markupsafe.py @@ -1,185 +1,185 @@ -import pytest - -from markupsafe import Markup - - -def test_adding(escape): - unsafe = '<script type="application/x-some-script">alert("foo");</script>' - safe = Markup("<em>username</em>") - assert unsafe + safe == str(escape(unsafe)) + str(safe) - - -@pytest.mark.parametrize( - ("template", "data", "expect"), - ( - ("<em>%s</em>", "<bad user>", "<em><bad user></em>"), - ( - "<em>%(username)s</em>", - {"username": "<bad user>"}, - "<em><bad user></em>", - ), - ("%i", 3.14, "3"), - ("%.2f", 3.14, "3.14"), - ), -) -def test_string_interpolation(template, data, expect): - assert Markup(template) % data == expect - - -def test_type_behavior(): - assert type(Markup("foo") + "bar") is Markup - x = Markup("foo") - assert x.__html__() is x - - -def test_html_interop(): - class Foo: - def __html__(self): - return "<em>awesome</em>" - - def __str__(self): - return "awesome" - - assert Markup(Foo()) == "<em>awesome</em>" - result = Markup("<strong>%s</strong>") % Foo() - assert result == "<strong><em>awesome</em></strong>" - - -def test_tuple_interpol(): - result = Markup("<em>%s:%s</em>") % ("<foo>", "<bar>") - expect = Markup("<em><foo>:<bar></em>") - assert result == expect - - -def test_dict_interpol(): - result = Markup("<em>%(foo)s</em>") % {"foo": "<foo>"} - expect = Markup("<em><foo></em>") - assert result == expect - - result = Markup("<em>%(foo)s:%(bar)s</em>") % {"foo": "<foo>", "bar": "<bar>"} - expect = Markup("<em><foo>:<bar></em>") - assert result == expect - - -def test_escaping(escape): - assert escape("\"<>&'") == ""<>&'" - assert Markup("<em>Foo & Bar</em>").striptags() == "Foo & Bar" - - -def test_unescape(): - assert Markup("<test>").unescape() == "<test>" - - result = Markup("jack & tavi are cooler than mike & russ").unescape() - expect = "jack & tavi are cooler than mike & russ" - assert result == expect - - original = "&foo;" - once = Markup(original).unescape() - twice = Markup(once).unescape() - expect = "&foo;" - assert once == expect - assert twice == expect - - -def test_format(): - result = Markup("<em>{awesome}</em>").format(awesome="<awesome>") - assert result == "<em><awesome></em>" - - result = Markup("{0[1][bar]}").format([0, {"bar": "<bar/>"}]) - assert result == "<bar/>" - - result = Markup("{0[1][bar]}").format([0, {"bar": Markup("<bar/>")}]) - assert result == "<bar/>" - - -def test_formatting_empty(): - formatted = Markup("{}").format(0) - assert formatted == Markup("0") - - -def test_custom_formatting(): - class HasHTMLOnly: - def __html__(self): - return Markup("<foo>") - - class HasHTMLAndFormat: - def __html__(self): - return Markup("<foo>") - - def __html_format__(self, spec): - return Markup("<FORMAT>") - - assert Markup("{0}").format(HasHTMLOnly()) == Markup("<foo>") - assert Markup("{0}").format(HasHTMLAndFormat()) == Markup("<FORMAT>") - - -def test_complex_custom_formatting(): - class User: - def __init__(self, id, username): - self.id = id - self.username = username - - def __html_format__(self, format_spec): - if format_spec == "link": - return Markup('<a href="/user/{0}">{1}</a>').format( - self.id, self.__html__() - ) - elif format_spec: - raise ValueError("Invalid format spec") - - return self.__html__() - - def __html__(self): - return Markup("<span class=user>{0}</span>").format(self.username) - - user = User(1, "foo") - result = Markup("<p>User: {0:link}").format(user) - expect = Markup('<p>User: <a href="/user/1"><span class=user>foo</span></a>') - assert result == expect - - -def test_formatting_with_objects(): - class Stringable: - def __str__(self): - return "строка" - - assert Markup("{s}").format(s=Stringable()) == Markup("строка") - - -def test_escape_silent(escape, escape_silent): - assert escape_silent(None) == Markup() - assert escape(None) == Markup(None) - assert escape_silent("<foo>") == Markup("<foo>") - - -def test_splitting(): - expect = [Markup("a"), Markup("b")] - assert Markup("a b").split() == expect - assert Markup("a b").rsplit() == expect - assert Markup("a\nb").splitlines() == expect - - -def test_mul(): - assert Markup("a") * 3 == Markup("aaa") - - -def test_escape_return_type(escape): - assert isinstance(escape("a"), Markup) - assert isinstance(escape(Markup("a")), Markup) - - class Foo: - def __html__(self): - return "<strong>Foo</strong>" - - assert isinstance(escape(Foo()), Markup) - - -def test_soft_str(soft_str): - assert type(soft_str("")) is str - assert type(soft_str(Markup())) is Markup - assert type(soft_str(15)) is str - - -def test_soft_unicode_deprecated(soft_unicode): - with pytest.warns(DeprecationWarning): - assert type(soft_unicode(Markup())) is Markup +import pytest + +from markupsafe import Markup + + +def test_adding(escape): + unsafe = '<script type="application/x-some-script">alert("foo");</script>' + safe = Markup("<em>username</em>") + assert unsafe + safe == str(escape(unsafe)) + str(safe) + + +@pytest.mark.parametrize( + ("template", "data", "expect"), + ( + ("<em>%s</em>", "<bad user>", "<em><bad user></em>"), + ( + "<em>%(username)s</em>", + {"username": "<bad user>"}, + "<em><bad user></em>", + ), + ("%i", 3.14, "3"), + ("%.2f", 3.14, "3.14"), + ), +) +def test_string_interpolation(template, data, expect): + assert Markup(template) % data == expect + + +def test_type_behavior(): + assert type(Markup("foo") + "bar") is Markup + x = Markup("foo") + assert x.__html__() is x + + +def test_html_interop(): + class Foo: + def __html__(self): + return "<em>awesome</em>" + + def __str__(self): + return "awesome" + + assert Markup(Foo()) == "<em>awesome</em>" + result = Markup("<strong>%s</strong>") % Foo() + assert result == "<strong><em>awesome</em></strong>" + + +def test_tuple_interpol(): + result = Markup("<em>%s:%s</em>") % ("<foo>", "<bar>") + expect = Markup("<em><foo>:<bar></em>") + assert result == expect + + +def test_dict_interpol(): + result = Markup("<em>%(foo)s</em>") % {"foo": "<foo>"} + expect = Markup("<em><foo></em>") + assert result == expect + + result = Markup("<em>%(foo)s:%(bar)s</em>") % {"foo": "<foo>", "bar": "<bar>"} + expect = Markup("<em><foo>:<bar></em>") + assert result == expect + + +def test_escaping(escape): + assert escape("\"<>&'") == ""<>&'" + assert Markup("<em>Foo & Bar</em>").striptags() == "Foo & Bar" + + +def test_unescape(): + assert Markup("<test>").unescape() == "<test>" + + result = Markup("jack & tavi are cooler than mike & russ").unescape() + expect = "jack & tavi are cooler than mike & russ" + assert result == expect + + original = "&foo;" + once = Markup(original).unescape() + twice = Markup(once).unescape() + expect = "&foo;" + assert once == expect + assert twice == expect + + +def test_format(): + result = Markup("<em>{awesome}</em>").format(awesome="<awesome>") + assert result == "<em><awesome></em>" + + result = Markup("{0[1][bar]}").format([0, {"bar": "<bar/>"}]) + assert result == "<bar/>" + + result = Markup("{0[1][bar]}").format([0, {"bar": Markup("<bar/>")}]) + assert result == "<bar/>" + + +def test_formatting_empty(): + formatted = Markup("{}").format(0) + assert formatted == Markup("0") + + +def test_custom_formatting(): + class HasHTMLOnly: + def __html__(self): + return Markup("<foo>") + + class HasHTMLAndFormat: + def __html__(self): + return Markup("<foo>") + + def __html_format__(self, spec): + return Markup("<FORMAT>") + + assert Markup("{0}").format(HasHTMLOnly()) == Markup("<foo>") + assert Markup("{0}").format(HasHTMLAndFormat()) == Markup("<FORMAT>") + + +def test_complex_custom_formatting(): + class User: + def __init__(self, id, username): + self.id = id + self.username = username + + def __html_format__(self, format_spec): + if format_spec == "link": + return Markup('<a href="/user/{0}">{1}</a>').format( + self.id, self.__html__() + ) + elif format_spec: + raise ValueError("Invalid format spec") + + return self.__html__() + + def __html__(self): + return Markup("<span class=user>{0}</span>").format(self.username) + + user = User(1, "foo") + result = Markup("<p>User: {0:link}").format(user) + expect = Markup('<p>User: <a href="/user/1"><span class=user>foo</span></a>') + assert result == expect + + +def test_formatting_with_objects(): + class Stringable: + def __str__(self): + return "строка" + + assert Markup("{s}").format(s=Stringable()) == Markup("строка") + + +def test_escape_silent(escape, escape_silent): + assert escape_silent(None) == Markup() + assert escape(None) == Markup(None) + assert escape_silent("<foo>") == Markup("<foo>") + + +def test_splitting(): + expect = [Markup("a"), Markup("b")] + assert Markup("a b").split() == expect + assert Markup("a b").rsplit() == expect + assert Markup("a\nb").splitlines() == expect + + +def test_mul(): + assert Markup("a") * 3 == Markup("aaa") + + +def test_escape_return_type(escape): + assert isinstance(escape("a"), Markup) + assert isinstance(escape(Markup("a")), Markup) + + class Foo: + def __html__(self): + return "<strong>Foo</strong>" + + assert isinstance(escape(Foo()), Markup) + + +def test_soft_str(soft_str): + assert type(soft_str("")) is str + assert type(soft_str(Markup())) is Markup + assert type(soft_str(15)) is str + + +def test_soft_unicode_deprecated(soft_unicode): + with pytest.warns(DeprecationWarning): + assert type(soft_unicode(Markup())) is Markup |