mirror of
https://github.com/Hopiu/linkchecker.git
synced 2026-05-04 12:54:42 +00:00
Better handling for link rel dns-prefetch and add preconnect support (#536)
preconnect is only DNS checked. This is allowed even in the Resource Hints Editor's Draft https://w3c.github.io/resource-hints/#preconnect
This commit is contained in:
parent
b6d97be46c
commit
900586dc01
2 changed files with 26 additions and 1 deletions
|
|
@ -157,7 +157,8 @@ class LinkFinder:
|
|||
base = self.base_ref
|
||||
# note: value can be None
|
||||
value = attrs.get(attr)
|
||||
if tag == 'link' and attrs.get('rel') == 'dns-prefetch':
|
||||
rel = attrs.get('rel', '').lower()
|
||||
if tag == 'link' and ('dns-prefetch' in rel or 'preconnect' in rel):
|
||||
if ':' in value:
|
||||
value = value.split(':', 1)[1]
|
||||
value = 'dns:' + value.rstrip('/')
|
||||
|
|
|
|||
|
|
@ -60,6 +60,30 @@ class TestLinkparser(unittest.TestCase):
|
|||
url = " alink "
|
||||
self._test_one_link(content % url, url)
|
||||
|
||||
def test_rel_parsing(self):
|
||||
# Test <link rel> parsing.
|
||||
content = '<link rel="%s" href="%s">'
|
||||
rel = "dns-prefetch"
|
||||
url = "https://alink"
|
||||
expected = "dns://alink"
|
||||
self._test_one_link(content % (rel, url), expected)
|
||||
url = "//alink/"
|
||||
self._test_one_link(content % (rel, url), expected)
|
||||
rel = "preconnect"
|
||||
url = "https://alink"
|
||||
self._test_one_link(content % (rel, url), expected)
|
||||
rel = "dns-prefetch preconnect"
|
||||
url = "https://alink"
|
||||
self._test_one_link(content % (rel, url), expected)
|
||||
|
||||
def test_link_without_rel_parsing(self):
|
||||
# <link> tags without rel attr should not raise TypeError.
|
||||
content = '<link href="%s">'
|
||||
url = "https://alink"
|
||||
expected = "https://alink"
|
||||
# Dummy test, we just have to make sure no error was raised.
|
||||
self._test_one_link(content % url, expected)
|
||||
|
||||
def test_img_srcset_parsing(self):
|
||||
content = '<img srcset="%s 1x">'
|
||||
url = "imagesmall.jpg"
|
||||
|
|
|
|||
Loading…
Reference in a new issue