Resolve KeyError when deleting URL with space.

Resolves #2963.
This commit is contained in:
Ryan Roden-Corrent 2017-09-14 12:03:40 -04:00
parent 31bd4d7ffe
commit 5cd00f699e
2 changed files with 14 additions and 8 deletions

View File

@ -26,7 +26,7 @@ from PyQt5.QtCore import pyqtSlot, QUrl, QTimer
from qutebrowser.commands import cmdutils, cmdexc
from qutebrowser.utils import (utils, objreg, log, usertypes, message,
debug, standarddir)
debug, standarddir, qtutils)
from qutebrowser.misc import objects, sql
@ -144,8 +144,10 @@ class WebHistory(sql.SqlTable):
Args:
url: URL string to delete.
"""
self.delete('url', url)
self.completion.delete('url', url)
qurl = QUrl(url)
qtutils.ensure_valid(qurl)
self.delete('url', self._format_url(qurl))
self.completion.delete('url', self._format_completion_url(qurl))
@pyqtSlot(QUrl, QUrl, str)
def add_from_tab(self, url, requested_url, title):

View File

@ -127,21 +127,25 @@ def test_clear_force(qtbot, tmpdir, hist):
assert not len(hist.completion)
def test_delete_url(hist):
@pytest.mark.parametrize('raw, escaped', [
('http://example.com/1', 'http://example.com/1'),
('http://example.com/1 2', 'http://example.com/1%202'),
])
def test_delete_url(hist, raw, escaped):
hist.add_url(QUrl('http://example.com/'), atime=0)
hist.add_url(QUrl('http://example.com/1'), atime=0)
hist.add_url(QUrl(escaped), atime=0)
hist.add_url(QUrl('http://example.com/2'), atime=0)
before = set(hist)
completion_before = set(hist.completion)
hist.delete_url(QUrl('http://example.com/1'))
hist.delete_url(QUrl(raw))
diff = before.difference(set(hist))
assert diff == {('http://example.com/1', '', 0, False)}
assert diff == {(escaped, '', 0, False)}
completion_diff = completion_before.difference(set(hist.completion))
assert completion_diff == {('http://example.com/1', '', 0)}
assert completion_diff == {(raw, '', 0)}
@pytest.mark.parametrize(