|
import pytest |
|
from unittest.mock import patch |
|
from bs4.builder import DetectsXMLParsedAsHTML |
|
|
|
class TestDetectsXMLParsedAsHTML(object): |
|
|
|
@pytest.mark.parametrize( |
|
"markup,looks_like_xml", |
|
[("No xml declaration", False), |
|
("<html>obviously HTML</html", False), |
|
("<?xml ><html>Actually XHTML</html>", False), |
|
("<?xml> < html>Tricky XHTML</html>", False), |
|
("<?xml ><no-html-tag>", True), |
|
] |
|
) |
|
def test_warn_if_markup_looks_like_xml(self, markup, looks_like_xml): |
|
|
|
|
|
with patch('bs4.builder.DetectsXMLParsedAsHTML._warn') as mock: |
|
for data in markup, markup.encode('utf8'): |
|
result = DetectsXMLParsedAsHTML.warn_if_markup_looks_like_xml( |
|
data |
|
) |
|
assert result == looks_like_xml |
|
if looks_like_xml: |
|
assert mock.called |
|
else: |
|
assert not mock.called |
|
mock.reset_mock() |
|
|