README.md: mention @pavreh's PPA for Ubuntu 18.04 users
[git-cola.git] / test / settings_test.py
blob8a8c42d85d3f4933d8c3e29566e62dcbc9edeafe
1 from __future__ import absolute_import, division, unicode_literals
3 import unittest
4 import os
6 from cola.settings import Settings
8 from . import helper
11 def new_settings(**kwargs):
12 settings = Settings(**kwargs)
13 settings.load()
14 return settings
17 class SettingsTestCase(unittest.TestCase):
18 """Tests the cola.settings module"""
20 def setUp(self):
21 Settings.config_path = self._file = helper.tmp_path('settings')
22 self.settings = new_settings()
24 def tearDown(self):
25 if os.path.exists(self._file):
26 os.remove(self._file)
28 def test_gui_save_restore(self):
29 """Test saving and restoring gui state"""
30 settings = new_settings()
31 settings.gui_state['test-gui'] = {'foo': 'bar'}
32 settings.save()
34 settings = new_settings()
35 state = settings.gui_state.get('test-gui', {})
36 self.assertTrue('foo' in state)
37 self.assertEqual(state['foo'], 'bar')
39 def test_bookmarks_save_restore(self):
40 """Test the bookmark save/restore feature"""
42 # We automatically purge missing entries so we mock-out
43 # git.is_git_worktree() so that this bookmark is kept.
45 bookmark = {'path': '/tmp/python/thinks/this/exists',
46 'name': 'exists'}
48 def mock_verify(path):
49 return path == bookmark['path']
51 settings = new_settings()
52 settings.add_bookmark(bookmark['path'], bookmark['name'])
53 settings.save()
55 settings = new_settings(verify=mock_verify)
57 bookmarks = settings.bookmarks
58 self.assertEqual(len(settings.bookmarks), 1)
59 self.assertTrue(bookmark in bookmarks)
61 settings.remove_bookmark(bookmark['path'], bookmark['name'])
62 bookmarks = settings.bookmarks
63 self.assertEqual(len(bookmarks), 0)
64 self.assertFalse(bookmark in bookmarks)
66 def test_bookmarks_removes_missing_entries(self):
67 """Test that missing entries are removed after a reload"""
68 bookmark = {'path': '/tmp/this/does/not/exist', 'name': 'notexist'}
69 settings = new_settings()
70 settings.add_bookmark(bookmark['path'], bookmark['name'])
71 settings.save()
73 settings = new_settings()
74 bookmarks = settings.bookmarks
75 self.assertEqual(len(settings.bookmarks), 0)
76 self.assertFalse(bookmark in bookmarks)
78 def test_rename_bookmark(self):
79 settings = new_settings()
80 settings.add_bookmark('/tmp/repo', 'a')
81 settings.add_bookmark('/tmp/repo', 'b')
82 settings.add_bookmark('/tmp/repo', 'c')
84 settings.rename_bookmark('/tmp/repo', 'b', 'test')
86 expect = ['a', 'test', 'c']
87 actual = [i['name'] for i in settings.bookmarks]
88 self.assertEqual(expect, actual)
91 if __name__ == '__main__':
92 unittest.main()