Merge pull request #3017 from rcorre/overwrite-hist-backup
Append multiple history backups on import.
This commit is contained in:
commit
fb9fca2477
@ -252,10 +252,7 @@ class WebHistory(sql.SqlTable):
|
|||||||
except ValueError as ex:
|
except ValueError as ex:
|
||||||
message.error('Failed to import history: {}'.format(ex))
|
message.error('Failed to import history: {}'.format(ex))
|
||||||
else:
|
else:
|
||||||
bakpath = path + '.bak'
|
self._write_backup(path)
|
||||||
message.info('History import complete. Moving {} to {}'
|
|
||||||
.format(path, bakpath))
|
|
||||||
os.rename(path, bakpath)
|
|
||||||
|
|
||||||
# delay to give message time to appear before locking down for import
|
# delay to give message time to appear before locking down for import
|
||||||
message.info('Converting {} to sqlite...'.format(path))
|
message.info('Converting {} to sqlite...'.format(path))
|
||||||
@ -287,6 +284,16 @@ class WebHistory(sql.SqlTable):
|
|||||||
self.insert_batch(data)
|
self.insert_batch(data)
|
||||||
self.completion.insert_batch(completion_data, replace=True)
|
self.completion.insert_batch(completion_data, replace=True)
|
||||||
|
|
||||||
|
def _write_backup(self, path):
|
||||||
|
bak = path + '.bak'
|
||||||
|
message.info('History import complete. Appending {} to {}'
|
||||||
|
.format(path, bak))
|
||||||
|
with open(path, 'r', encoding='utf-8') as infile:
|
||||||
|
with open(bak, 'a', encoding='utf-8') as outfile:
|
||||||
|
for line in infile:
|
||||||
|
outfile.write('\n' + line)
|
||||||
|
os.remove(path)
|
||||||
|
|
||||||
def _format_url(self, url):
|
def _format_url(self, url):
|
||||||
return url.toString(QUrl.RemovePassword | QUrl.FullyEncoded)
|
return url.toString(QUrl.RemovePassword | QUrl.FullyEncoded)
|
||||||
|
|
||||||
|
@ -284,6 +284,22 @@ def test_import_txt(hist, data_tmpdir, monkeypatch, stubs):
|
|||||||
assert (data_tmpdir / 'history.bak').exists()
|
assert (data_tmpdir / 'history.bak').exists()
|
||||||
|
|
||||||
|
|
||||||
|
def test_import_txt_existing_backup(hist, data_tmpdir, monkeypatch, stubs):
|
||||||
|
monkeypatch.setattr(history, 'QTimer', stubs.InstaTimer)
|
||||||
|
histfile = data_tmpdir / 'history'
|
||||||
|
bakfile = data_tmpdir / 'history.bak'
|
||||||
|
histfile.write('12345 http://example.com/ title')
|
||||||
|
bakfile.write('12346 http://qutebrowser.org/')
|
||||||
|
|
||||||
|
hist.import_txt()
|
||||||
|
|
||||||
|
assert list(hist) == [('http://example.com/', 'title', 12345, False)]
|
||||||
|
|
||||||
|
assert not histfile.exists()
|
||||||
|
assert bakfile.read().split('\n') == ['12346 http://qutebrowser.org/',
|
||||||
|
'12345 http://example.com/ title']
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('line', [
|
@pytest.mark.parametrize('line', [
|
||||||
'',
|
'',
|
||||||
'#12345 http://example.com/commented',
|
'#12345 http://example.com/commented',
|
||||||
|
Loading…
Reference in New Issue
Block a user