urlmatch: Use None as default for host

This commit is contained in:
Florian Bruhin 2018-02-15 16:42:41 +01:00
parent 5419d1caa1
commit 2d43a1d2e7
2 changed files with 11 additions and 4 deletions

View File

@ -53,7 +53,7 @@ class UrlPattern:
Note that with Chromium, '*'/None only matches http/https and
not file/ftp. We deviate from that as per-URL settings aren't
security relevant.
_host: The host to match to, or None for any host. (FIXME true?)
_host: The host to match to, or None for any host.
_path: The path to match to, or None for any path. (FIXME true?)
_port: The port to match to as integer, or None for any port.
"""
@ -139,6 +139,10 @@ class UrlPattern:
host_parts = host_parts[1:]
self._match_subdomains = True
if not host_parts:
self._host = None
return
self._host = '.'.join(host_parts)
if self._host.endswith('.*'):
@ -184,6 +188,9 @@ class UrlPattern:
# FIXME what about multiple dots?
host = host.rstrip('.')
if self._host is None:
return True
# If the hosts are exactly equal, we have a match.
if host == self._host:
return True

View File

@ -103,7 +103,7 @@ class TestMatchAllPagesForGivenScheme:
def test_attrs(self, up):
assert up._scheme == 'http'
assert up._host == '' # FIXME '' or None?
assert up._host is None
assert up._match_subdomains
assert not up._match_all
assert up._path == '/*'
@ -127,7 +127,7 @@ class TestMatchAllDomains:
def test_attrs(self, up):
assert up._scheme == 'https'
assert up._host == '' # FIXME '' or None?
assert up._host is None
assert up._match_subdomains
assert not up._match_all
assert up._path == '/foo*'
@ -175,7 +175,7 @@ class TestMatchGlobEscaping:
def test_attrs(self, up):
assert up._scheme == 'file'
assert up._host == '' # FIXME '' or None?
assert up._host is None
assert not up._match_subdomains
assert not up._match_all
assert up._path == r'/foo-bar\*baz'