1 """Test the cola.settings module"""
2 # pylint: disable=redefined-outer-name
3 from __future__
import absolute_import
, division
, print_function
, unicode_literals
8 from cola
.settings
import Settings
13 @pytest.fixture(autouse
=True)
14 def settings_fixture():
15 """Provide Settings that save into a temporary location to all tests"""
16 filename
= helper
.tmp_path('settings')
17 Settings
.config_path
= filename
21 if os
.path
.exists(filename
):
25 def test_gui_save_restore(settings_fixture
):
26 """Test saving and restoring gui state"""
27 settings
= settings_fixture
28 settings
.gui_state
['test-gui'] = {'foo': 'bar'}
31 settings
= Settings
.read()
32 state
= settings
.gui_state
.get('test-gui', {})
34 assert state
['foo'] == 'bar'
37 def test_bookmarks_save_restore():
38 """Test the bookmark save/restore feature"""
39 # We automatically purge missing entries so we mock-out
40 # git.is_git_worktree() so that this bookmark is kept.
41 bookmark
= {'path': '/tmp/python/thinks/this/exists', 'name': 'exists'}
43 def mock_verify(path
):
44 return path
== bookmark
['path']
46 settings
= Settings
.read()
47 settings
.add_bookmark(bookmark
['path'], bookmark
['name'])
50 settings
= Settings
.read(verify
=mock_verify
)
52 bookmarks
= settings
.bookmarks
53 assert len(settings
.bookmarks
) == 1
54 assert bookmark
in bookmarks
56 settings
.remove_bookmark(bookmark
['path'], bookmark
['name'])
57 bookmarks
= settings
.bookmarks
59 actual
= len(bookmarks
)
60 assert expect
== actual
61 assert bookmark
not in bookmarks
64 def test_bookmarks_removes_missing_entries():
65 """Test that missing entries are removed after a reload"""
66 # verify returns False so all entries will be removed.
67 bookmark
= {'path': '.', 'name': 'does-not-exist'}
68 settings
= Settings
.read(verify
=lambda x
: False)
69 settings
.add_bookmark(bookmark
['path'], bookmark
['name'])
70 settings
.remove_missing_bookmarks()
73 settings
= Settings
.read()
74 bookmarks
= settings
.bookmarks
76 actual
= len(bookmarks
)
77 assert expect
== actual
78 assert bookmark
not in bookmarks
81 def test_rename_bookmark():
82 settings
= Settings
.read()
83 settings
.add_bookmark('/tmp/repo', 'a')
84 settings
.add_bookmark('/tmp/repo', 'b')
85 settings
.add_bookmark('/tmp/repo', 'c')
87 settings
.rename_bookmark('/tmp/repo', 'b', 'test')
89 expect
= ['a', 'test', 'c']
90 actual
= [i
['name'] for i
in settings
.bookmarks
]
91 assert expect
== actual