py$(PYV): remove tox env folder $(@D)/.tox/py$(PYV) py$(PYV): commands[0]> python -m pytest -v ============================= test session starts ============================== platform sunos5 -- Python $(PYTHON_VERSION).X -- $(@D)/.tox/py$(PYV)/bin/python cachedir: .tox/py$(PYV)/.pytest_cache rootdir: $(@D) configfile: setup.cfg collecting ... collected 427 items / 1 skipped tests/test_callbacks.py::TestNofollowCallback::test_basic PASSED tests/test_callbacks.py::TestNofollowCallback::test_blank PASSED tests/test_callbacks.py::TestNofollowCallback::test_has_nofollow_already PASSED tests/test_callbacks.py::TestNofollowCallback::test_mailto PASSED tests/test_callbacks.py::TestNofollowCallback::test_no_href PASSED tests/test_callbacks.py::TestNofollowCallback::test_other_rel PASSED tests/test_callbacks.py::TestTargetBlankCallback::test_add_target PASSED tests/test_callbacks.py::TestTargetBlankCallback::test_empty PASSED tests/test_callbacks.py::TestTargetBlankCallback::test_mailto PASSED tests/test_callbacks.py::TestTargetBlankCallback::test_stomp_target PASSED tests/test_clean.py::TestCleaner::test_basics PASSED tests/test_clean.py::TestCleaner::test_filters PASSED tests/test_clean.py::test_attributes_callable PASSED tests/test_clean.py::test_attributes_list PASSED tests/test_clean.py::test_attributes_tag_callable PASSED tests/test_clean.py::test_attributes_tag_list PASSED tests/test_clean.py::test_attributes_wildcard PASSED tests/test_clean.py::test_attributes_wildcard_callable PASSED tests/test_clean.py::test_bare_entities_get_escaped_correctly[an & entity-an & entity] PASSED tests/test_clean.py::test_bare_entities_get_escaped_correctly[an < entity-an < entity] PASSED tests/test_clean.py::test_bare_entities_get_escaped_correctly[tag < <em>and</em> entity-tag < <em>and</em> entity] PASSED tests/test_clean.py::test_character_entities_handling[&#-&#] PASSED tests/test_clean.py::test_character_entities_handling[{-{] PASSED tests/test_clean.py::test_character_entities_handling["-"] PASSED tests/test_clean.py::test_character_entities_handling['"-'"] PASSED tests/test_clean.py::test_character_entities_handling['-'] PASSED tests/test_clean.py::test_character_entities_handling[&#<-&#<] PASSED tests/test_clean.py::test_character_entities_handling[{-{] PASSED tests/test_clean.py::test_character_entities_handling[{-{] PASSED tests/test_clean.py::test_character_entities_handling[&& is cool-&& is cool] PASSED tests/test_clean.py::test_character_entities_handling[&adp;-&adp;] PASSED tests/test_clean.py::test_character_entities_handling[& is cool &&-& is cool &&] PASSED tests/test_clean.py::test_character_entities_handling[&-&] PASSED tests/test_clean.py::test_character_entities_handling[&is cool-&is cool] PASSED tests/test_clean.py::test_character_entities_handling[&currdupe;-&currdupe;] PASSED tests/test_clean.py::test_character_entities_handling[<em>strong</em>-<em>strong</em>] PASSED tests/test_clean.py::test_character_entities_handling[ test string - test string ] PASSED tests/test_clean.py::test_character_entities_handling[ - ] PASSED tests/test_clean.py::test_character_entities_handling[&xx;-&xx;] PASSED tests/test_clean.py::test_character_entities_handling[<a href="?art&copy">foo</a>-<a href="?art&copy">foo</a>] PASSED tests/test_clean.py::test_character_entities_handling[<a href="?this=>that">foo</a>-<a href="?this=>that">foo</a>] PASSED tests/test_clean.py::test_character_entities_handling[<a href="http://example.com/&xx;">foo</a>-<a href="http://example.com/&xx;">foo</a>] PASSED tests/test_clean.py::test_character_entities_handling[<a href="http://example.com?&adp;">foo</a>-<a href="http://example.com?&adp;">foo</a>] PASSED tests/test_clean.py::test_character_entities_handling[<a href="http://example.com?active=true¤t=true">foo</a>-<a href="http://example.com?active=true&current=true">foo</a>] PASSED tests/test_clean.py::test_character_entities_handling[cool &-cool &] PASSED tests/test_clean.py::test_character_entities_handling[http://example.com?active=true¤t=true-http://example.com?active=true&current=true] PASSED tests/test_clean.py::test_character_entities_handling[this & that-this &amp that] PASSED tests/test_clean.py::test_clean_idempotent[& &] PASSED tests/test_clean.py::test_clean_idempotent[<a href="http://example.com?foo=bar&bar=foo&biz=bash">] PASSED tests/test_clean.py::test_clean_idempotent[<span>text & </span>] PASSED tests/test_clean.py::test_clean_idempotent[a < b] PASSED tests/test_clean.py::test_clean_idempotent[jim ¤t joe] PASSED tests/test_clean.py::test_clean_idempotent[jim &xx; joe] PASSED tests/test_clean.py::test_clean_idempotent[link http://link.com] PASSED tests/test_clean.py::test_clean_idempotent[text<em>] PASSED tests/test_clean.py::test_clean_idempotent_img PASSED tests/test_clean.py::test_comments[<!-- comment -->text-False-<!-- comment -->text] PASSED tests/test_clean.py::test_comments[<!-- comment -->text-True-text] PASSED tests/test_clean.py::test_comments[<!-- open comment-False-<!-- open comment-->] PASSED tests/test_clean.py::test_comments[<!-- open comment-True-] PASSED tests/test_clean.py::test_comments[<!-- this is a comment -->-True-] PASSED tests/test_clean.py::test_comments[<!--comment-->text-False-<!--comment-->text] PASSED tests/test_clean.py::test_comments[<!--comment-->text-True-text] PASSED tests/test_clean.py::test_comments[<!--open comment-False-<!--open comment-->] PASSED tests/test_clean.py::test_comments[<!--open comment-True-] PASSED tests/test_clean.py::test_comments[text<!-- comment -->-False-text<!-- comment -->] PASSED tests/test_clean.py::test_comments[text<!-- comment -->-True-text] PASSED tests/test_clean.py::test_comments[text<!--comment-->-False-text<!--comment-->] PASSED tests/test_clean.py::test_comments[text<!--comment-->-True-text] PASSED tests/test_clean.py::test_content_has_allowed_html[an <strong>allowed</strong> tag-an <strong>allowed</strong> tag] PASSED tests/test_clean.py::test_content_has_allowed_html[another <em>good</em> tag-another <em>good</em> tag] PASSED tests/test_clean.py::test_content_has_no_html PASSED tests/test_clean.py::test_css_sanitizer_warning[attr0] PASSED tests/test_clean.py::test_css_sanitizer_warning[attr1] PASSED tests/test_clean.py::test_disallowed_attr PASSED tests/test_clean.py::test_empty PASSED tests/test_clean.py::test_escaping_tags[</ sarcasm >-</ sarcasm >] PASSED tests/test_clean.py::test_escaping_tags[</ sarcasm>-</ sarcasm>] PASSED tests/test_clean.py::test_escaping_tags[</3-</3] PASSED tests/test_clean.py::test_escaping_tags[</sarcasm>-</sarcasm>] PASSED tests/test_clean.py::test_escaping_tags[<bar@example.com>-<bar@example.com>] PASSED tests/test_clean.py::test_escaping_tags[<img src="javascript:alert('XSS');">-<img src="javascript:alert('XSS');">] PASSED tests/test_clean.py::test_escaping_tags[<isindex>-<isindex>] PASSED tests/test_clean.py::test_escaping_tags[<sarcasm/>-<sarcasm/>] PASSED tests/test_clean.py::test_escaping_tags[<sarcasm>-<sarcasm>] PASSED tests/test_clean.py::test_escaping_tags[<script>safe()</script>-<script>safe()</script>] PASSED tests/test_clean.py::test_escaping_tags[<style>body{}</style>-<style>body{}</style>] PASSED tests/test_clean.py::test_escaping_tags[<ul><li><script></li></ul>-<ul><li><script></li></ul>] PASSED tests/test_clean.py::test_escaping_tags[Favorite movie: <name of movie>-Favorite movie: <name of movie>] PASSED tests/test_clean.py::test_href_with_wrong_tag PASSED tests/test_clean.py::test_html_comments_escaped[math-br-iframe-<math></br><iframe><!--</iframe><img src/onerror=alert(1)>-<math><br><iframe><!--</iframe><img src/onerror=alert(1)>--></iframe></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-br-noembed-<math></br><noembed><!--</noembed><img src/onerror=alert(1)>-<math><br><noembed><!--</noembed><img src/onerror=alert(1)>--></noembed></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-br-noframes-<math></br><noframes><!--</noframes><img src/onerror=alert(1)>-<math><br><noframes><!--</noframes><img src/onerror=alert(1)>--></noframes></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-br-noscript-<math></br><noscript><!--</noscript><img src/onerror=alert(1)>-<math><br><noscript><!--</noscript><img src/onerror=alert(1)>--></noscript></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-br-script-<math></br><script><!--</script><img src/onerror=alert(1)>-<math><br><script><!--</script><img src/onerror=alert(1)>--></script></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-br-style-<math></br><style><!--</style><img src/onerror=alert(1)>-<math><br><style><!--</style><img src/onerror=alert(1)>--></style></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-br-textarea-<math></br><textarea><!--</textarea><img src/onerror=alert(1)>-<math><br><textarea><!--</textarea><img src/onerror=alert(1)>--></textarea></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-br-title-<math></br><title><!--</title><img src/onerror=alert(1)>-<math><br><title><!--</title><img src/onerror=alert(1)>--></title></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-br-xmp-<math></br><xmp><!--</xmp><img src/onerror=alert(1)>-<math><br><xmp><!--</xmp><img src/onerror=alert(1)>--></xmp></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-p-iframe-<math></p><iframe><!--</iframe><img src/onerror=alert(1)>-<math><p></p><iframe><!--</iframe><img src/onerror=alert(1)>--></iframe></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-p-noembed-<math></p><noembed><!--</noembed><img src/onerror=alert(1)>-<math><p></p><noembed><!--</noembed><img src/onerror=alert(1)>--></noembed></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-p-noframes-<math></p><noframes><!--</noframes><img src/onerror=alert(1)>-<math><p></p><noframes><!--</noframes><img src/onerror=alert(1)>--></noframes></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-p-noscript-<math></p><noscript><!--</noscript><img src/onerror=alert(1)>-<math><p></p><noscript><!--</noscript><img src/onerror=alert(1)>--></noscript></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-p-script-<math></p><script><!--</script><img src/onerror=alert(1)>-<math><p></p><script><!--</script><img src/onerror=alert(1)>--></script></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-p-style-<math></p><style><!--</style><img src/onerror=alert(1)>-<math><p></p><style><!--</style><img src/onerror=alert(1)>--></style></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-p-textarea-<math></p><textarea><!--</textarea><img src/onerror=alert(1)>-<math><p></p><textarea><!--</textarea><img src/onerror=alert(1)>--></textarea></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-p-title-<math></p><title><!--</title><img src/onerror=alert(1)>-<math><p></p><title><!--</title><img src/onerror=alert(1)>--></title></math>] PASSED tests/test_clean.py::test_html_comments_escaped[math-p-xmp-<math></p><xmp><!--</xmp><img src/onerror=alert(1)>-<math><p></p><xmp><!--</xmp><img src/onerror=alert(1)>--></xmp></math>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-br-iframe-<svg></br><iframe><!--</iframe><img src/onerror=alert(1)>-<svg><br><iframe><!--</iframe><img src/onerror=alert(1)>--></iframe></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-br-noembed-<svg></br><noembed><!--</noembed><img src/onerror=alert(1)>-<svg><br><noembed><!--</noembed><img src/onerror=alert(1)>--></noembed></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-br-noframes-<svg></br><noframes><!--</noframes><img src/onerror=alert(1)>-<svg><br><noframes><!--</noframes><img src/onerror=alert(1)>--></noframes></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-br-noscript-<svg></br><noscript><!--</noscript><img src/onerror=alert(1)>-<svg><br><noscript><!--</noscript><img src/onerror=alert(1)>--></noscript></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-br-script-<svg></br><script><!--</script><img src/onerror=alert(1)>-<svg><br><script><!--</script><img src/onerror=alert(1)>--></script></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-br-style-<svg></br><style><!--</style><img src/onerror=alert(1)>-<svg><br><style><!--</style><img src/onerror=alert(1)>--></style></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-br-textarea-<svg></br><textarea><!--</textarea><img src/onerror=alert(1)>-<svg><br><textarea><!--</textarea><img src/onerror=alert(1)>--></textarea></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-br-title-<svg></br><title><!--</title><img src/onerror=alert(1)>-<svg><br><title><!--</title><img src/onerror=alert(1)>--></title></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-br-xmp-<svg></br><xmp><!--</xmp><img src/onerror=alert(1)>-<svg><br><xmp><!--</xmp><img src/onerror=alert(1)>--></xmp></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-p-iframe-<svg></p><iframe><!--</iframe><img src/onerror=alert(1)>-<svg><p></p><iframe><!--</iframe><img src/onerror=alert(1)>--></iframe></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-p-noembed-<svg></p><noembed><!--</noembed><img src/onerror=alert(1)>-<svg><p></p><noembed><!--</noembed><img src/onerror=alert(1)>--></noembed></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-p-noframes-<svg></p><noframes><!--</noframes><img src/onerror=alert(1)>-<svg><p></p><noframes><!--</noframes><img src/onerror=alert(1)>--></noframes></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-p-noscript-<svg></p><noscript><!--</noscript><img src/onerror=alert(1)>-<svg><p></p><noscript><!--</noscript><img src/onerror=alert(1)>--></noscript></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-p-script-<svg></p><script><!--</script><img src/onerror=alert(1)>-<svg><p></p><script><!--</script><img src/onerror=alert(1)>--></script></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-p-style-<svg></p><style><!--</style><img src/onerror=alert(1)>-<svg><p></p><style><!--</style><img src/onerror=alert(1)>--></style></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-p-textarea-<svg></p><textarea><!--</textarea><img src/onerror=alert(1)>-<svg><p></p><textarea><!--</textarea><img src/onerror=alert(1)>--></textarea></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-p-title-<svg></p><title><!--</title><img src/onerror=alert(1)>-<svg><p></p><title><!--</title><img src/onerror=alert(1)>--></title></svg>] PASSED tests/test_clean.py::test_html_comments_escaped[svg-p-xmp-<svg></p><xmp><!--</xmp><img src/onerror=alert(1)>-<svg><p></p><xmp><!--</xmp><img src/onerror=alert(1)>--></xmp></svg>] PASSED tests/test_clean.py::test_html_is_lowercased PASSED tests/test_clean.py::test_invalid_char_in_tag PASSED tests/test_clean.py::test_invalid_filter_attr PASSED tests/test_clean.py::test_invisible_characters[1\x0723-1?23] PASSED tests/test_clean.py::test_invisible_characters[1\x0823-1?23] PASSED tests/test_clean.py::test_invisible_characters[1\x0b23-1?23] PASSED tests/test_clean.py::test_invisible_characters[1\x0c23-1?23] PASSED tests/test_clean.py::test_invisible_characters[import y\x08ose\x08m\x08i\x08t\x08e\x08-import y?ose?m?i?t?e?] PASSED tests/test_clean.py::test_lessthan_escaping[<some thing thing-<some thing thing] PASSED tests/test_clean.py::test_lessthan_escaping[<some thing thing2 -<some thing thing2 ] PASSED tests/test_clean.py::test_lessthan_escaping[<some thing-<some thing] PASSED tests/test_clean.py::test_lessthan_escaping[<some thing=foo-<some thing=foo] PASSED tests/test_clean.py::test_lessthan_escaping[<y-<y] PASSED tests/test_clean.py::test_lessthan_escaping[<y>-<y>] PASSED tests/test_clean.py::test_lessthan_escaping[x < y-x < y] PASSED tests/test_clean.py::test_lessthan_escaping[x<y-x<y] PASSED tests/test_clean.py::test_namespace_rc_data_element_strip_false[math-iframe-<math><iframe><img src=x onerror=alert(1)>-<math><iframe><img src=x onerror=alert(1)></iframe></math>] PASSED tests/test_clean.py::test_namespace_rc_data_element_strip_false[math-noembed-<math><noembed><img src=x onerror=alert(1)>-<math><noembed><img src=x onerror=alert(1)></noembed></math>] PASSED tests/test_clean.py::test_namespace_rc_data_element_strip_false[math-noframes-<math><noframes><img src=x onerror=alert(1)>-<math><noframes><img src=x onerror=alert(1)></noframes></math>] PASSED tests/test_clean.py::test_namespace_rc_data_element_strip_false[math-noscript-<math><noscript><img src=x onerror=alert(1)>-<math><noscript><img src=x onerror=alert(1)></noscript></math>] PASSED tests/test_clean.py::test_namespace_rc_data_element_strip_false[math-script-<math><script><img src=x onerror=alert(1)>-<math><script><img src=x onerror=alert(1)></script></math>] PASSED tests/test_clean.py::test_namespace_rc_data_element_strip_false[math-style-<math><style><img src=x onerror=alert(1)>-<math><style><img src=x onerror=alert(1)></style></math>] PASSED tests/test_clean.py::test_namespace_rc_data_element_strip_false[math-xmp-<math><xmp><img src=x onerror=alert(1)>-<math><xmp><img src=x onerror=alert(1)></xmp></math>] PASSED tests/test_clean.py::test_namespace_rc_data_element_strip_false[svg-iframe-<svg><iframe><img src=x onerror=alert(1)>-<svg><iframe><img src=x onerror=alert(1)></iframe></svg>] PASSED tests/test_clean.py::test_namespace_rc_data_element_strip_false[svg-noembed-<svg><noembed><img src=x onerror=alert(1)>-<svg><noembed><img src=x onerror=alert(1)></noembed></svg>] PASSED tests/test_clean.py::test_namespace_rc_data_element_strip_false[svg-noframes-<svg><noframes><img src=x onerror=alert(1)>-<svg><noframes><img src=x onerror=alert(1)></noframes></svg>] PASSED tests/test_clean.py::test_namespace_rc_data_element_strip_false[svg-noscript-<svg><noscript><img src=x onerror=alert(1)>-<svg><noscript><img src=x onerror=alert(1)></noscript></svg>] PASSED tests/test_clean.py::test_namespace_rc_data_element_strip_false[svg-script-<svg><script><img src=x onerror=alert(1)>-<svg><script><img src=x onerror=alert(1)></script></svg>] PASSED tests/test_clean.py::test_namespace_rc_data_element_strip_false[svg-style-<svg><style><img src=x onerror=alert(1)>-<svg><style><img src=x onerror=alert(1)></style></svg>] PASSED tests/test_clean.py::test_namespace_rc_data_element_strip_false[svg-xmp-<svg><xmp><img src=x onerror=alert(1)>-<svg><xmp><img src=x onerror=alert(1)></xmp></svg>] PASSED tests/test_clean.py::test_nested_script_tag PASSED tests/test_clean.py::test_nonexistent_namespace PASSED tests/test_clean.py::test_noscript_rawtag_[iframe-<noscript><iframe></noscript><img src=x onerror=alert(1) />-<noscript><iframe></noscript><img src=x onerror=alert(1) />] PASSED tests/test_clean.py::test_noscript_rawtag_[noembed-<noscript><noembed></noscript><img src=x onerror=alert(1) />-<noscript><noembed></noscript><img src=x onerror=alert(1) />] PASSED tests/test_clean.py::test_noscript_rawtag_[noframes-<noscript><noframes></noscript><img src=x onerror=alert(1) />-<noscript><noframes></noscript><img src=x onerror=alert(1) />] PASSED tests/test_clean.py::test_noscript_rawtag_[script-<noscript><script></noscript><img src=x onerror=alert(1) />-<noscript><script></noscript><img src=x onerror=alert(1) />] PASSED tests/test_clean.py::test_noscript_rawtag_[style-<noscript><style></noscript><img src=x onerror=alert(1) />-<noscript><style></noscript><img src=x onerror=alert(1) />] PASSED tests/test_clean.py::test_noscript_rawtag_[textarea-<noscript><textarea></noscript><img src=x onerror=alert(1) />-<noscript><textarea></noscript><img src=x onerror=alert(1) />] PASSED tests/test_clean.py::test_noscript_rawtag_[title-<noscript><title></noscript><img src=x onerror=alert(1) />-<noscript><title></noscript><img src=x onerror=alert(1) />] PASSED tests/test_clean.py::test_noscript_rawtag_[xmp-<noscript><xmp></noscript><img src=x onerror=alert(1) />-<noscript><xmp></noscript><img src=x onerror=alert(1) />] PASSED tests/test_clean.py::test_only_text_is_cleaned PASSED tests/test_clean.py::test_poster_attribute PASSED tests/test_clean.py::test_preserves_attributes_order PASSED tests/test_clean.py::test_regressions[1.test] PASSED tests/test_clean.py::test_regressions[10.test] PASSED tests/test_clean.py::test_regressions[11.test] PASSED tests/test_clean.py::test_regressions[12.test] PASSED tests/test_clean.py::test_regressions[13.test] PASSED tests/test_clean.py::test_regressions[14.test] PASSED tests/test_clean.py::test_regressions[15.test] PASSED tests/test_clean.py::test_regressions[16.test] PASSED tests/test_clean.py::test_regressions[17.test] PASSED tests/test_clean.py::test_regressions[18.test] PASSED tests/test_clean.py::test_regressions[19.test] PASSED tests/test_clean.py::test_regressions[2.test] PASSED tests/test_clean.py::test_regressions[20.test] PASSED tests/test_clean.py::test_regressions[3.test] PASSED tests/test_clean.py::test_regressions[4.test] PASSED tests/test_clean.py::test_regressions[5.test] PASSED tests/test_clean.py::test_regressions[6.test] PASSED tests/test_clean.py::test_regressions[7.test] PASSED tests/test_clean.py::test_regressions[8.test] PASSED tests/test_clean.py::test_regressions[9.test] PASSED tests/test_clean.py::test_self_closing_tags_self_close[area] PASSED tests/test_clean.py::test_self_closing_tags_self_close[base] PASSED tests/test_clean.py::test_self_closing_tags_self_close[br] PASSED tests/test_clean.py::test_self_closing_tags_self_close[embed] PASSED tests/test_clean.py::test_self_closing_tags_self_close[hr] PASSED tests/test_clean.py::test_self_closing_tags_self_close[img] PASSED tests/test_clean.py::test_self_closing_tags_self_close[input] PASSED tests/test_clean.py::test_self_closing_tags_self_close[keygen] XFAIL tests/test_clean.py::test_self_closing_tags_self_close[link] PASSED tests/test_clean.py::test_self_closing_tags_self_close[menuitem] XFAIL tests/test_clean.py::test_self_closing_tags_self_close[meta] PASSED tests/test_clean.py::test_self_closing_tags_self_close[param] PASSED tests/test_clean.py::test_self_closing_tags_self_close[source] PASSED tests/test_clean.py::test_self_closing_tags_self_close[track] PASSED tests/test_clean.py::test_self_closing_tags_self_close[wbr] XFAIL tests/test_clean.py::test_strip_respects_block_level_elements[<div><p>This is our <b>description!</b> &</p></div><p>nice!</p>-\nThis is our description! &\nnice!] PASSED tests/test_clean.py::test_strip_respects_block_level_elements[<div><p>This is our <b>description!</b> &</p><p>1</p><ul><li>a</li><li>b</li><li>c</li></ul></div><p>nice!</p>-\nThis is our description! &\n1\n\na\nb\nc\nnice!] PASSED tests/test_clean.py::test_strip_respects_block_level_elements[<p>Te<b>st</b>!</p><p>Hello</p>-Test!\nHello] PASSED tests/test_clean.py::test_strip_respects_block_level_elements[<p>This is our <b>description!</b> &</p><p>nice!</p>-This is our description! &\nnice!] PASSED tests/test_clean.py::test_stripping_tags[</ sarcasm >-kwargs11-</ sarcasm >] PASSED tests/test_clean.py::test_stripping_tags[</ sarcasm>-kwargs10-</ sarcasm>] PASSED tests/test_clean.py::test_stripping_tags[</3-kwargs14-</3] PASSED tests/test_clean.py::test_stripping_tags[</sarcasm>-kwargs9-] PASSED tests/test_clean.py::test_stripping_tags[<isindex>-kwargs6-] PASSED tests/test_clean.py::test_stripping_tags[<p><a href="http://example.com/"><img src="http://example.com/"></a></p>-kwargs5-<p><a href="http://example.com/"></a></p>] PASSED tests/test_clean.py::test_stripping_tags[<p><a href="http://example.com/">link text</a></p>-kwargs2-<p>link text</p>] PASSED tests/test_clean.py::test_stripping_tags[<p><span>multiply <span>nested <span>text</span></span></span></p>-kwargs3-<p>multiply nested text</p>] PASSED tests/test_clean.py::test_stripping_tags[<sarcasm>-kwargs8-] PASSED tests/test_clean.py::test_stripping_tags[<ul><li><script></li></ul>-kwargs4-<ul><li></li></ul>] PASSED tests/test_clean.py::test_stripping_tags[Favorite movie: <name of movie>-kwargs13-Favorite movie: ] PASSED tests/test_clean.py::test_stripping_tags[Foo <bar@example.com>-kwargs12-Foo ] PASSED tests/test_clean.py::test_stripping_tags[Yeah right <sarcasm/>-kwargs7-Yeah right ] PASSED tests/test_clean.py::test_stripping_tags[a test <em>with</em> <b>html</b> tags-kwargs0-a test <em>with</em> <b>html</b> tags] PASSED tests/test_clean.py::test_stripping_tags[a test <em>with</em> <img src="http://example.com/"> <b>html</b> tags-kwargs1-a test <em>with</em> <b>html</b> tags] PASSED tests/test_clean.py::test_stripping_tags_is_safe[<scri<scri<script>pt>pt>alert(1)</script>-pt>pt>alert(1)] PASSED tests/test_clean.py::test_stripping_tags_is_safe[<scri<script>pt>alert(1)</scr</script>ipt>-pt>alert(1)ipt>] PASSED tests/test_clean.py::test_svg_allow_local_href[<svg><pattern id="patt1" href="#patt2"></pattern></svg>-<svg><pattern id="patt1" href="#patt2"></pattern></svg>] PASSED tests/test_clean.py::test_svg_allow_local_href[<svg><pattern id="patt1" xlink:href="#patt2"></pattern></svg>-<svg><pattern id="patt1" href="#patt2"></pattern></svg>] PASSED tests/test_clean.py::test_svg_allow_local_href_nonlocal[<svg><pattern id="patt1" href="https://example.com/patt"></pattern></svg>-<svg><pattern id="patt1"></pattern></svg>] PASSED tests/test_clean.py::test_svg_allow_local_href_nonlocal[<svg><pattern id="patt1" xlink:href="https://example.com/patt"></pattern></svg>-<svg><pattern id="patt1"></pattern></svg>] PASSED tests/test_clean.py::test_svg_attr_val_allows_ref PASSED tests/test_clean.py::test_unclosed_tag PASSED tests/test_clean.py::test_unquoted_attr_values_are_quoted PASSED tests/test_clean.py::test_unquoted_event_handler_attr_value PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="#example.com">foo</a>-kwargs7-<a href="#example.com">foo</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="#section-1">foo</a>-kwargs6-<a href="#section-1">foo</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="javascript:alert(1)">alert</a>-kwargs24-<a>alert</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="/path">valid</a>-kwargs8-<a href="/path">valid</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="/path">valid</a>-kwargs9-<a href="/path">valid</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="192.168.100.100">foo</a>-kwargs21-<a>foo</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="192.168.100.100">valid</a>-kwargs14-<a href="192.168.100.100">valid</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="192.168.100.100:8000">foo</a>-kwargs22-<a>foo</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="192.168.100.100:8000">valid</a>-kwargs15-<a href="192.168.100.100:8000">valid</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="192.168.100.100:8000/foo#bar">valid</a>-kwargs16-<a href="192.168.100.100:8000/foo#bar">valid</a>] XFAIL tests/test_clean.py::test_uri_value_allowed_protocols[<a href="data:text/javascript,prompt(1)">foo</a>-kwargs1-<a>foo</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="example.com">foo</a>-kwargs17-<a>foo</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="example.com">valid</a>-kwargs10-<a href="example.com">valid</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="example.com:8000">foo</a>-kwargs18-<a>foo</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="example.com:8000">valid</a>-kwargs11-<a href="example.com:8000">valid</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="file:///tmp/foo">foo</a>-kwargs3-<a>foo</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="http://example.com">invalid href</a>-kwargs5-<a>invalid href</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="http://example.com/?foo bar">foo</a>-kwargs25-<a href="http://example.com/?foo bar">foo</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="http://example.com]">text</a>-kwargs0-<a>text</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="javas	cript:alert(1)">alert</a>-kwargs23-<a>alert</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="javascript:alert('XSS')">xss</a>-kwargs2-<a>xss</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="localhost">foo</a>-kwargs19-<a>foo</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="localhost">valid</a>-kwargs12-<a href="localhost">valid</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="localhost:8000">foo</a>-kwargs20-<a>foo</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="localhost:8000">valid</a>-kwargs13-<a href="localhost:8000">valid</a>] PASSED tests/test_clean.py::test_uri_value_allowed_protocols[<a href="myprotocol://more_text">allowed href</a>-kwargs4-<a href="myprotocol://more_text">allowed href</a>] PASSED tests/test_html5lib_shim.py::test_bleach_html_parser[parser_args0-<meta charset="utf-8">-<meta charset="utf-8">] PASSED tests/test_html5lib_shim.py::test_bleach_html_parser[parser_args1-text &>"-text &amp;&gt;&quot;] PASSED tests/test_html5lib_shim.py::test_bleach_html_parser[parser_args2-text &>"-text &>"] PASSED tests/test_html5lib_shim.py::test_bleach_html_parser[parser_args3-<a href="http://example.com"">-<a href="http://example.com"></a>] PASSED tests/test_html5lib_shim.py::test_bleach_html_parser[parser_args4-<a href='http://example.com''>-<a href="http://example.com"></a>] PASSED tests/test_html5lib_shim.py::test_bleach_html_parser[parser_args5-</ chars-<!-- chars-->] PASSED tests/test_html5lib_shim.py::test_convert_entities[&#-1;-&#-1;] PASSED tests/test_html5lib_shim.py::test_convert_entities[ - ] PASSED tests/test_html5lib_shim.py::test_convert_entities[�-�] PASSED tests/test_html5lib_shim.py::test_convert_entities[&#;-&#;] PASSED tests/test_html5lib_shim.py::test_convert_entities[&#x-1;-&#x-1;] PASSED tests/test_html5lib_shim.py::test_convert_entities[�-�] PASSED tests/test_html5lib_shim.py::test_convert_entities[�-�] PASSED tests/test_html5lib_shim.py::test_convert_entities[ - ] PASSED tests/test_html5lib_shim.py::test_convert_entities[&#x;-&#x;] PASSED tests/test_html5lib_shim.py::test_convert_entities[ -\xa0] PASSED tests/test_html5lib_shim.py::test_convert_entities[&xx;-&xx;] PASSED tests/test_html5lib_shim.py::test_convert_entities[-] PASSED tests/test_html5lib_shim.py::test_convert_entities[abc-abc] PASSED tests/test_html5lib_shim.py::test_convert_entities[this & that & that-this & that & that] PASSED tests/test_html5lib_shim.py::test_serializer[&-&] PASSED tests/test_html5lib_shim.py::test_serializer[-] PASSED tests/test_html5lib_shim.py::test_serializer[<a href="http://example.com?key=value&key2=value">tag</a>-<a href="http://example.com?key=value&key2=value">tag</a>] PASSED tests/test_html5lib_shim.py::test_serializer[<a href="http://example.com?key=value¤t=value">tag</a>-<a href="http://example.com?key=value&current=value">tag</a>] PASSED tests/test_html5lib_shim.py::test_serializer[<a href="http://example.com?key=value&key2=value">tag</a>-<a href="http://example.com?key=value&key2=value">tag</a>] PASSED tests/test_html5lib_shim.py::test_serializer[a & b-a &amp; b] PASSED tests/test_html5lib_shim.py::test_serializer[text-text] PASSED tests/test_linkify.py::TestLinkify::test_no_href_links PASSED tests/test_linkify.py::TestLinkify::test_only_text_is_linkified PASSED tests/test_linkify.py::TestLinkify::test_rel_already_there PASSED tests/test_linkify.py::test_add_rel_nofollow PASSED tests/test_linkify.py::test_drop_link_tags PASSED tests/test_linkify.py::test_elements_inside_links PASSED tests/test_linkify.py::test_email_link["\\\n"@opa.ru-True-"\\\n"@opa.ru] PASSED tests/test_linkify.py::test_email_link[<br>jinkyun@example.com-True-<br><a href="mailto:jinkyun@example.com">jinkyun@example.com</a>] PASSED tests/test_linkify.py::test_email_link[a james@example.com mailto-False-a james@example.com mailto] PASSED tests/test_linkify.py::test_email_link[a james@example.com mailto-True-a <a href="mailto:james@example.com">james@example.com</a> mailto] PASSED tests/test_linkify.py::test_email_link[a james@example.com.au mailto-False-a james@example.com.au mailto] PASSED tests/test_linkify.py::test_email_link[aussie james@example.com.au mailto-True-aussie <a href="mailto:james@example.com.au">james@example.com.au</a> mailto] PASSED tests/test_linkify.py::test_email_link[email to <a href="james@example.com">james@example.com</a>-True-email to <a href="james@example.com" rel="nofollow">james@example.com</a>] PASSED tests/test_linkify.py::test_email_link[gorby%kremvax@example.com-True-<a href="mailto:gorby%25kremvax@example.com">gorby%kremvax@example.com</a>] PASSED tests/test_linkify.py::test_email_link[mailto james@example.com.au.-True-mailto <a href="mailto:james@example.com.au">james@example.com.au</a>.] PASSED tests/test_linkify.py::test_email_link[unlikely?address@example.com-True-<a href="mailto:unlikely%3Faddress@example.com">unlikely?address@example.com</a>] PASSED tests/test_linkify.py::test_email_link_escaping["j'ames"@example.com-<a href="mailto:%22j%27ames%22@example.com">"j'ames"@example.com</a>] PASSED tests/test_linkify.py::test_email_link_escaping["ja>mes"@example.com-<a href="mailto:%22ja%3Emes%22@example.com">"ja>mes"@example.com</a>] PASSED tests/test_linkify.py::test_email_link_escaping["james"@example.com-<a href="mailto:%22james%22@example.com">"james"@example.com</a>] PASSED tests/test_linkify.py::test_email_re_arg PASSED tests/test_linkify.py::test_empty PASSED tests/test_linkify.py::test_end_of_clause PASSED tests/test_linkify.py::test_end_of_sentence[ex.com/foo-....] PASSED tests/test_linkify.py::test_end_of_sentence[ex.com/foo-.] PASSED tests/test_linkify.py::test_end_of_sentence[example.com-...] PASSED tests/test_linkify.py::test_end_of_sentence[example.com-.] PASSED tests/test_linkify.py::test_escaped_html PASSED tests/test_linkify.py::test_escaping[< unrelated-< unrelated] PASSED tests/test_linkify.py::test_escaping[<U \x7f=&#;>-<u \x7f="&#;"></u>] PASSED tests/test_linkify.py::test_hang PASSED tests/test_linkify.py::test_hyphen_in_mail PASSED tests/test_linkify.py::test_ignore_bad_protocols PASSED tests/test_linkify.py::test_javascript_url PASSED tests/test_linkify.py::test_libgl PASSED tests/test_linkify.py::test_link_emails_and_urls PASSED tests/test_linkify.py::test_link_entities_in_a_tag PASSED tests/test_linkify.py::test_link_entities_in_characters_token PASSED tests/test_linkify.py::test_link_entities_in_qs PASSED tests/test_linkify.py::test_link_fragment PASSED tests/test_linkify.py::test_link_ftp PASSED tests/test_linkify.py::test_link_http_complete PASSED tests/test_linkify.py::test_link_in_html PASSED tests/test_linkify.py::test_link_query PASSED tests/test_linkify.py::test_link_with_qs_with_array PASSED tests/test_linkify.py::test_linkify_filter[abc-abc] PASSED tests/test_linkify.py::test_linkify_filter[example.com-<a href="http://example.com" rel="nofollow">example.com</a>] PASSED tests/test_linkify.py::test_linkify_filter[http://example.com?b=1&c=2-<a href="http://example.com?b=1&c=2" rel="nofollow">http://example.com?b=1&c=2</a>] PASSED tests/test_linkify.py::test_linkify_filter[http://example.com?b=1&c=2-<a href="http://example.com?b=1&c=2" rel="nofollow">http://example.com?b=1&c=2</a>] PASSED tests/test_linkify.py::test_linkify_filter[link: https://example.com/watch#anchor-link: <a href="https://example.com/watch#anchor" rel="nofollow">https://example.com/watch#anchor</a>] PASSED tests/test_linkify.py::test_linkify_idempotent[<a href="http://example.com?foo=bar&bar=foo&biz=bash">] PASSED tests/test_linkify.py::test_linkify_idempotent[<span>text & </span>] PASSED tests/test_linkify.py::test_linkify_idempotent[a < b] PASSED tests/test_linkify.py::test_linkify_idempotent[jim ¤t joe] PASSED tests/test_linkify.py::test_linkify_idempotent[link http://link.com] PASSED tests/test_linkify.py::test_linkify_idempotent[text<em>] PASSED tests/test_linkify.py::test_links_case_insensitive PASSED tests/test_linkify.py::test_links_https PASSED tests/test_linkify.py::test_mangle_link PASSED tests/test_linkify.py::test_mangle_text PASSED tests/test_linkify.py::test_naughty_unescaping[<br> <br> http://example.com-<br> <br> <a href="http://example.com" rel="nofollow">http://example.com</a>] PASSED tests/test_linkify.py::test_naughty_unescaping[<br> http://example.com-<br> <a href="http://example.com" rel="nofollow">http://example.com</a>] PASSED tests/test_linkify.py::test_naughty_unescaping[<br>-<br>] PASSED tests/test_linkify.py::test_nofollow_off PASSED tests/test_linkify.py::test_non_url PASSED tests/test_linkify.py::test_only_proto_links PASSED tests/test_linkify.py::test_parentheses_with_removing PASSED tests/test_linkify.py::test_ports[http://bar.com:xkcd-http://bar.com-:xkcd] PASSED tests/test_linkify.py::test_ports[http://foo.com:-http://foo.com-:] PASSED tests/test_linkify.py::test_ports[http://foo.com:8000-http://foo.com:8000-] PASSED tests/test_linkify.py::test_ports[http://foo.com:8000/-http://foo.com:8000/-] PASSED tests/test_linkify.py::test_ports[http://foo.com:81/bar-http://foo.com:81/bar-] PASSED tests/test_linkify.py::test_ports[http://foo.com:\U0001d7e0\U0001d7d8/-http://foo.com-:\U0001d7e0\U0001d7d8/] PASSED tests/test_linkify.py::test_ports[http://foo.com:\u0663\u0669/-http://foo.com-:\u0663\u0669/] PASSED tests/test_linkify.py::test_prevent_links[callback0-a <a href="http://ex.mp">ex.mp</a> <a href="http://example.com">example</a>] PASSED tests/test_linkify.py::test_prevent_links[callback1-a ex.mp <a href="http://example.com">example</a>] PASSED tests/test_linkify.py::test_prevent_links[callback2-a ex.mp <a href="http://example.com">example</a>] PASSED tests/test_linkify.py::test_prevent_links[callback3-a <a href="http://ex.mp">ex.mp</a> example] PASSED tests/test_linkify.py::test_prevent_links[callback4-a <a href="http://ex.mp">ex.mp</a> example] PASSED tests/test_linkify.py::test_prevent_links[callback5-a ex.mp example] PASSED tests/test_linkify.py::test_recognized_tags_arg PASSED tests/test_linkify.py::test_sarcasm PASSED tests/test_linkify.py::test_set_attrs PASSED tests/test_linkify.py::test_simple_link PASSED tests/test_linkify.py::test_skip_tags PASSED tests/test_linkify.py::test_stop_email PASSED tests/test_linkify.py::test_tlds[bit.ly/fun-<a href="http://bit.ly/fun" rel="nofollow">bit.ly/fun</a>] PASSED tests/test_linkify.py::test_tlds[brie-brie] PASSED tests/test_linkify.py::test_tlds[example.co-<a href="http://example.co" rel="nofollow">example.co</a>] PASSED tests/test_linkify.py::test_tlds[example.co.uk-<a href="http://example.co.uk" rel="nofollow">example.co.uk</a>] PASSED tests/test_linkify.py::test_tlds[example.com-<a href="http://example.com" rel="nofollow">example.com</a>] PASSED tests/test_linkify.py::test_tlds[example.edu-<a href="http://example.edu" rel="nofollow">example.edu</a>] PASSED tests/test_linkify.py::test_tlds[example.xxx-<a href="http://example.xxx" rel="nofollow">example.xxx</a>] PASSED tests/test_linkify.py::test_tlds[example.yyy-example.yyy] PASSED tests/test_linkify.py::test_trailing_slash PASSED tests/test_linkify.py::test_unsafe_url PASSED tests/test_linkify.py::test_url_re_arg PASSED tests/test_linkify.py::test_url_with_path PASSED tests/test_linkify.py::test_wrapping_parentheses[(((example.com/))))-expected_parts3] PASSED tests/test_linkify.py::test_wrapping_parentheses[((http://en.wikipedia.org/wiki/Test_(assessment))-expected_parts9] PASSED tests/test_linkify.py::test_wrapping_parentheses[(example.com)-expected_parts0] PASSED tests/test_linkify.py::test_wrapping_parentheses[(example.com/)-expected_parts1] PASSED tests/test_linkify.py::test_wrapping_parentheses[(example.com/foo)-expected_parts2] PASSED tests/test_linkify.py::test_wrapping_parentheses[(foo http://example.com)-expected_parts6] PASSED tests/test_linkify.py::test_wrapping_parentheses[(foo http://example.com/)-expected_parts5] PASSED tests/test_linkify.py::test_wrapping_parentheses[(http://en.wikipedia.org/wiki/)Test_(assessment-expected_parts11] PASSED tests/test_linkify.py::test_wrapping_parentheses[(http://en.wikipedia.org/wiki/Test_(assessment)))-expected_parts10] PASSED tests/test_linkify.py::test_wrapping_parentheses[(http://en.wikipedia.org/wiki/Test_(assessment))-expected_parts8] PASSED tests/test_linkify.py::test_wrapping_parentheses[example.com/))-expected_parts4] PASSED tests/test_linkify.py::test_wrapping_parentheses[hello (http://www.mu.de/blah.html) world-expected_parts12] PASSED tests/test_linkify.py::test_wrapping_parentheses[hello (http://www.mu.de/blah.html). world-expected_parts13] PASSED tests/test_linkify.py::test_wrapping_parentheses[http://en.wikipedia.org/wiki/Test_(assessment)-expected_parts7] PASSED tests/test_parse_shim.py::test_urlparse[ foo.com -expected9] PASSED tests/test_parse_shim.py::test_urlparse[-expected0] PASSED tests/test_parse_shim.py::test_urlparse[\t :foo.com \n-expected8] PASSED tests/test_parse_shim.py::test_urlparse[a:\t foo.com-expected10] PASSED tests/test_parse_shim.py::test_urlparse[http://2001::1]-ValueError] PASSED tests/test_parse_shim.py::test_urlparse[http://example\t.\norg-expected1] PASSED tests/test_parse_shim.py::test_urlparse[http://f: /c-expected19] PASSED tests/test_parse_shim.py::test_urlparse[http://f:/c-expected13] PASSED tests/test_parse_shim.py::test_urlparse[http://f:0/c-expected14] PASSED tests/test_parse_shim.py::test_urlparse[http://f:00000000000000/c-expected15] PASSED tests/test_parse_shim.py::test_urlparse[http://f:00000000000000000000080/c-expected16] PASSED tests/test_parse_shim.py::test_urlparse[http://f:21/ b ? d # e -expected11] PASSED tests/test_parse_shim.py::test_urlparse[http://f:999999/c-expected20] PASSED tests/test_parse_shim.py::test_urlparse[http://f:b/c-expected18] PASSED tests/test_parse_shim.py::test_urlparse[http://user:pass@foo:21/bar;par?b#c-expected2] PASSED tests/test_parse_shim.py::test_urlparse[http:foo.com-expected7] PASSED tests/test_parse_shim.py::test_urlparse[https://:@test-expected4] PASSED tests/test_parse_shim.py::test_urlparse[https://test:@test-expected3] PASSED tests/test_parse_shim.py::test_urlparse[lolscheme:x x#x x-expected12] PASSED tests/test_parse_shim.py::test_urlparse[non-special://:@test/x-expected6] PASSED tests/test_parse_shim.py::test_urlparse[non-special://test:@test/x-expected5] PASSED tests/test_unicode.py::test_japanese_safe_simple PASSED tests/test_unicode.py::test_japanese_strip PASSED tests/test_unicode.py::test_mixed PASSED tests/test_unicode.py::test_mixed_linkify PASSED tests/test_unicode.py::test_russian_simple PASSED tests/test_unicode.py::test_url_utf8[http://\xe9x\xe1mpl\xe9.com/\xed\xe0\xf1\xe1/?f\xf3o=b\xe1r] PASSED tests/test_unicode.py::test_url_utf8[http://\xe9x\xe1mpl\xe9.com/\xed\xe0\xf1\xe1/?foo=bar] PASSED tests/test_unicode.py::test_url_utf8[http://\xe9x\xe1mpl\xe9.com/\xed\xe0\xf1\xe1/] PASSED tests/test_unicode.py::test_url_utf8[http://\xe9x\xe1mpl\xe9.com/] PASSED ======== 423 passed, 1 skipped, 4 xfailed ======== py$(PYV): commands[1]> python setup.py build running build running build_py running egg_info writing bleach.egg-info/PKG-INFO writing dependency_links to bleach.egg-info/dependency_links.txt writing requirements to bleach.egg-info/requires.txt writing top-level names to bleach.egg-info/top_level.txt reading manifest file 'bleach.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'LICENSE' writing manifest file 'bleach.egg-info/SOURCES.txt' py$(PYV): OK congratulations :)