Merge remote-tracking branch 'origin/pr/3765' into adblock

This commit is contained in:
Florian Bruhin 2018-03-28 20:32:47 +02:00
commit d7455bcdba
2 changed files with 20 additions and 16 deletions

View File

@ -94,14 +94,8 @@ class HostBlocker:
_done_count: How many files have been read successfully. _done_count: How many files have been read successfully.
_local_hosts_file: The path to the blocked-hosts file. _local_hosts_file: The path to the blocked-hosts file.
_config_hosts_file: The path to a blocked-hosts in ~/.config _config_hosts_file: The path to a blocked-hosts in ~/.config
Class attributes:
WHITELISTED: Hosts which never should be blocked.
""" """
WHITELISTED = ('localhost', 'localhost.localdomain', 'broadcasthost',
'local')
def __init__(self): def __init__(self):
self._blocked_hosts = set() self._blocked_hosts = set()
self._config_blocked_hosts = set() self._config_blocked_hosts = set()
@ -234,15 +228,13 @@ class HostBlocker:
parts = line.split() parts = line.split()
if len(parts) == 1: if len(parts) == 1:
# "one host per line" format # "one host per line" format
host = parts[0] hosts = [parts[0]]
elif len(parts) == 2:
# /etc/hosts format
host = parts[1]
else: else:
log.misc.error("Failed to parse: {!r}".format(line)) # /etc/hosts format
return False hosts = parts[1:]
if host not in self.WHITELISTED: for host in hosts:
if '.' in host and not host.endswith('.localdomain'):
self._blocked_hosts.add(host) self._blocked_hosts.add(host)
return True return True

View File

@ -120,8 +120,10 @@ def assert_urls(host_blocker, blocked=BLOCKLIST_HOSTS,
Ensure URLs in 'blocked' and not in 'whitelisted' are blocked. Ensure URLs in 'blocked' and not in 'whitelisted' are blocked.
All other URLs must not be blocked. All other URLs must not be blocked.
localhost is an example of a special case that shouldn't be blocked.
""" """
whitelisted = list(whitelisted) + list(host_blocker.WHITELISTED) whitelisted = list(whitelisted) + ['localhost']
for str_url in urls_to_check: for str_url in urls_to_check:
url = QUrl(str_url) url = QUrl(str_url)
host = url.host() host = url.host()
@ -247,6 +249,16 @@ def test_successful_update(config_stub, basedir, download_stub,
assert_urls(host_blocker, whitelisted=[]) assert_urls(host_blocker, whitelisted=[])
def test_parsing_multiple_hosts_on_line(config_stub, basedir, download_stub,
data_tmpdir, tmpdir, win_registry,
caplog):
"""Ensure multiple hosts on a line get parsed correctly."""
host_blocker = adblock.HostBlocker()
bytes_host_line = ' '.join(BLOCKLIST_HOSTS).encode('utf-8')
host_blocker._parse_line(bytes_host_line)
assert_urls(host_blocker, whitelisted=[])
def test_failed_dl_update(config_stub, basedir, download_stub, def test_failed_dl_update(config_stub, basedir, download_stub,
data_tmpdir, tmpdir, win_registry, caplog): data_tmpdir, tmpdir, win_registry, caplog):
"""One blocklist fails to download. """One blocklist fails to download.
@ -341,7 +353,7 @@ def test_blocking_with_whitelist(config_stub, basedir, download_stub,
"""Ensure hosts in content.host_blocking.whitelist are never blocked.""" """Ensure hosts in content.host_blocking.whitelist are never blocked."""
# Simulate adblock_update has already been run # Simulate adblock_update has already been run
# by creating a file named blocked-hosts, # by creating a file named blocked-hosts,
# Exclude localhost from it, since localhost is in HostBlocker.WHITELISTED # Exclude localhost from it as localhost is never blocked via list
filtered_blocked_hosts = BLOCKLIST_HOSTS[1:] filtered_blocked_hosts = BLOCKLIST_HOSTS[1:]
blocklist = create_blocklist(data_tmpdir, blocklist = create_blocklist(data_tmpdir,
blocked_hosts=filtered_blocked_hosts, blocked_hosts=filtered_blocked_hosts,