From 8d606faacab66108c9d678c28106cac57035f483 Mon Sep 17 00:00:00 2001 From: mamg22 <45301823+mamg22@users.noreply.github.com> Date: Wed, 4 Nov 2020 21:43:47 -0400 Subject: Fix completion.web_history.exclude on config.py --- qutebrowser/browser/history.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/qutebrowser/browser/history.py b/qutebrowser/browser/history.py index 89061cebf..9db73dd1c 100644 --- a/qutebrowser/browser/history.py +++ b/qutebrowser/browser/history.py @@ -80,6 +80,7 @@ class CompletionMetaInfo(sql.SqlTable): KEYS = { 'force_rebuild': False, + 'excluded_patterns': '', } def __init__(self, parent=None): @@ -156,9 +157,18 @@ class WebHistory(sql.SqlTable): self.completion = CompletionHistory(parent=self) self.metainfo = CompletionMetaInfo(parent=self) + # Get a string of all patterns + patterns = "\n".join([str(pattern) for pattern in + config.cache['completion.web_history.exclude']]) + + do_rebuild = False + if self.metainfo['excluded_patterns'] != patterns: + self.metainfo['excluded_patterns'] = patterns + do_rebuild = True + if sql.Query('pragma user_version').run().value() < _USER_VERSION: self.completion.delete_all() - if self.metainfo['force_rebuild']: + if self.metainfo['force_rebuild'] or do_rebuild: self.completion.delete_all() self.metainfo['force_rebuild'] = False -- cgit v1.2.3-54-g00ecf From 93ecd8f72f108743948f0d1881055ff2337058ec Mon Sep 17 00:00:00 2001 From: mamg22 <45301823+mamg22@users.noreply.github.com> Date: Fri, 6 Nov 2020 10:39:57 -0400 Subject: Remove 'force_rebuild' --- qutebrowser/browser/history.py | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/qutebrowser/browser/history.py b/qutebrowser/browser/history.py index 9db73dd1c..76c696894 100644 --- a/qutebrowser/browser/history.py +++ b/qutebrowser/browser/history.py @@ -79,7 +79,6 @@ class CompletionMetaInfo(sql.SqlTable): """Table containing meta-information for the completion.""" KEYS = { - 'force_rebuild': False, 'excluded_patterns': '', } @@ -157,20 +156,15 @@ class WebHistory(sql.SqlTable): self.completion = CompletionHistory(parent=self) self.metainfo = CompletionMetaInfo(parent=self) + if sql.Query('pragma user_version').run().value() < _USER_VERSION: + self.completion.delete_all() + # Get a string of all patterns - patterns = "\n".join([str(pattern) for pattern in - config.cache['completion.web_history.exclude']]) + patterns = config.instance.get_str('completion.web_history.exclude') - do_rebuild = False if self.metainfo['excluded_patterns'] != patterns: self.metainfo['excluded_patterns'] = patterns - do_rebuild = True - - if sql.Query('pragma user_version').run().value() < _USER_VERSION: - self.completion.delete_all() - if self.metainfo['force_rebuild'] or do_rebuild: self.completion.delete_all() - self.metainfo['force_rebuild'] = False if not self.completion: # either the table is out-of-date or the user wiped it manually @@ -193,18 +187,12 @@ class WebHistory(sql.SqlTable): 'ORDER BY atime desc ' 'limit :limit offset :offset') - config.instance.changed.connect(self._on_config_changed) - def __repr__(self): return utils.get_repr(self, length=len(self)) def __contains__(self, url): return self._contains_query.run(val=url).value() - @config.change_filter('completion.web_history.exclude') - def _on_config_changed(self): - self.metainfo['force_rebuild'] = True - @contextlib.contextmanager def _handle_sql_errors(self): try: -- cgit v1.2.3-54-g00ecf From 3d4fdd4ffdf5940e0ace60b0296e0a9e3280cff6 Mon Sep 17 00:00:00 2001 From: mamg22 <45301823+mamg22@users.noreply.github.com> Date: Tue, 22 Dec 2020 00:16:20 -0400 Subject: Add small comment --- qutebrowser/browser/history.py | 1 + 1 file changed, 1 insertion(+) diff --git a/qutebrowser/browser/history.py b/qutebrowser/browser/history.py index 76c696894..be32bb6a9 100644 --- a/qutebrowser/browser/history.py +++ b/qutebrowser/browser/history.py @@ -162,6 +162,7 @@ class WebHistory(sql.SqlTable): # Get a string of all patterns patterns = config.instance.get_str('completion.web_history.exclude') + # If patterns changed, update them in database and rebuild completion if self.metainfo['excluded_patterns'] != patterns: self.metainfo['excluded_patterns'] = patterns self.completion.delete_all() -- cgit v1.2.3-54-g00ecf From 707d88843ffb12cbc5f73c41533def9b5dedea06 Mon Sep 17 00:00:00 2001 From: mamg22 <45301823+mamg22@users.noreply.github.com> Date: Wed, 23 Dec 2020 18:32:47 -0400 Subject: Replace "force_rebuild" in TestCompletionMetaInfo --- tests/unit/browser/test_history.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/unit/browser/test_history.py b/tests/unit/browser/test_history.py index c70b858f5..8ee24204b 100644 --- a/tests/unit/browser/test_history.py +++ b/tests/unit/browser/test_history.py @@ -475,12 +475,12 @@ class TestCompletionMetaInfo: metainfo['does_not_exist'] = 42 def test_contains(self, metainfo): - assert 'force_rebuild' in metainfo + assert 'excluded_patterns' in metainfo def test_modify(self, metainfo): - assert not metainfo['force_rebuild'] - metainfo['force_rebuild'] = True - assert metainfo['force_rebuild'] + assert not metainfo['excluded_patterns'] + metainfo['excluded_patterns'] = 'https://example.com/' + assert metainfo['excluded_patterns'] class TestHistoryProgress: -- cgit v1.2.3-54-g00ecf From 1a9b59fcfa73d1505834d8461ee166f07fb201cd Mon Sep 17 00:00:00 2001 From: mamg22 <45301823+mamg22@users.noreply.github.com> Date: Wed, 23 Dec 2020 21:36:28 -0400 Subject: Update tests in TestRebuild Remove or replace uses of "force_rebuild" Added test_pattern_change_rebuild --- tests/unit/browser/test_history.py | 45 +++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/tests/unit/browser/test_history.py b/tests/unit/browser/test_history.py index 8ee24204b..e56298037 100644 --- a/tests/unit/browser/test_history.py +++ b/tests/unit/browser/test_history.py @@ -402,30 +402,12 @@ class TestRebuild: ('example.com/2', '', 2), ] - def test_force_rebuild(self, web_history, stubs): - """Ensure that completion is regenerated if we force a rebuild.""" - web_history.add_url(QUrl('example.com/1'), redirect=False, atime=1) - web_history.add_url(QUrl('example.com/2'), redirect=False, atime=2) - web_history.completion.delete('url', 'example.com/2') - - hist2 = history.WebHistory(progress=stubs.FakeHistoryProgress()) - assert list(hist2.completion) == [('example.com/1', '', 1)] - hist2.metainfo['force_rebuild'] = True - - hist3 = history.WebHistory(progress=stubs.FakeHistoryProgress()) - assert list(hist3.completion) == [ - ('example.com/1', '', 1), - ('example.com/2', '', 2), - ] - assert not hist3.metainfo['force_rebuild'] - def test_exclude(self, config_stub, web_history, stubs): """Ensure that patterns in completion.web_history.exclude are ignored. This setting should only be used for the completion. """ config_stub.val.completion.web_history.exclude = ['*.example.org'] - assert web_history.metainfo['force_rebuild'] web_history.add_url(QUrl('http://example.com'), redirect=False, atime=1) @@ -435,16 +417,35 @@ class TestRebuild: hist2 = history.WebHistory(progress=stubs.FakeHistoryProgress()) assert list(hist2.completion) == [('http://example.com', '', 1)] - def test_unrelated_config_change(self, config_stub, web_history): - config_stub.val.history_gap_interval = 1234 - assert not web_history.metainfo['force_rebuild'] + def test_pattern_change_rebuild(self, config_stub, web_history, stubs): + """Ensure that completion is regenerated when exclude patterns change""" + config_stub.val.completion.web_history.exclude = ['*.example.org'] + + web_history.add_url(QUrl('http://example.com'), + redirect=False, atime=1) + web_history.add_url(QUrl('http://example.org'), + redirect=False, atime=2) + + hist2 = history.WebHistory(progress=stubs.FakeHistoryProgress()) + assert list(hist2.completion) == [ + ('http://example.com', '', 1), + ] + + config_stub.val.completion.web_history.exclude = [] + + hist3 = history.WebHistory(progress=stubs.FakeHistoryProgress()) + assert list(hist3.completion) == [ + ('http://example.com', '', 1), + ('http://example.org', '', 2) + ] @pytest.mark.parametrize('patch_threshold', [True, False]) def test_progress(self, web_history, config_stub, monkeypatch, stubs, patch_threshold): web_history.add_url(QUrl('example.com/1'), redirect=False, atime=1) web_history.add_url(QUrl('example.com/2'), redirect=False, atime=2) - web_history.metainfo['force_rebuild'] = True + # Change cached patterns to trigger a completion rebuild + web_history.metainfo['excluded_patterns'] = 'http://example.org' if patch_threshold: monkeypatch.setattr(history.WebHistory, '_PROGRESS_THRESHOLD', 1) -- cgit v1.2.3-54-g00ecf From 785c59c5f6cb67369c144b69d42e308500b17c9a Mon Sep 17 00:00:00 2001 From: mamg22 <45301823+mamg22@users.noreply.github.com> Date: Wed, 23 Dec 2020 21:52:46 -0400 Subject: Reword function description and fix flake8 warning --- tests/unit/browser/test_history.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/browser/test_history.py b/tests/unit/browser/test_history.py index e56298037..cb993ddf1 100644 --- a/tests/unit/browser/test_history.py +++ b/tests/unit/browser/test_history.py @@ -418,7 +418,7 @@ class TestRebuild: assert list(hist2.completion) == [('http://example.com', '', 1)] def test_pattern_change_rebuild(self, config_stub, web_history, stubs): - """Ensure that completion is regenerated when exclude patterns change""" + """Ensure that completion is rebuilt when exclude patterns change.""" config_stub.val.completion.web_history.exclude = ['*.example.org'] web_history.add_url(QUrl('http://example.com'), -- cgit v1.2.3-54-g00ecf