diff options
-rw-r--r-- | ranger/container/bookmarks.py | 8 | ||||
-rw-r--r-- | ranger/defaults/options.py | 1 | ||||
-rw-r--r-- | ranger/fm.py | 2 | ||||
-rw-r--r-- | ranger/shared/settings.py | 2 | ||||
-rw-r--r-- | test/tc_bookmarks.py | 73 |
5 files changed, 81 insertions, 5 deletions
diff --git a/ranger/container/bookmarks.py b/ranger/container/bookmarks.py index 738efe46..98fdc402 100644 --- a/ranger/container/bookmarks.py +++ b/ranger/container/bookmarks.py @@ -98,6 +98,7 @@ class Bookmarks(object): return for key in set(self.dct.keys()) | set(real_dict.keys()): + # set some variables if key in self.dct: current = self.dct[key] else: @@ -113,13 +114,14 @@ class Bookmarks(object): else: real = None + # determine if there have been changes if current == original and current != real: - continue + continue # another ranger instance has changed the bookmark if key not in self.dct: - del real_dict[key] + del real_dict[key] # the user has deleted it else: - real_dict[key] = current + real_dict[key] = current # the user has changed it self._set_dict(real_dict, original=real_dict_copy) diff --git a/ranger/defaults/options.py b/ranger/defaults/options.py index d4172eee..6467369b 100644 --- a/ranger/defaults/options.py +++ b/ranger/defaults/options.py @@ -11,6 +11,7 @@ directories_first = True preview_files = False max_history_size = 20 auto_load_preview = True +autosave_bookmarks = True max_dirsize_for_autopreview = None sort = 'basename' diff --git a/ranger/fm.py b/ranger/fm.py index 2fb7e21c..e70e9f3c 100644 --- a/ranger/fm.py +++ b/ranger/fm.py @@ -33,7 +33,7 @@ class FM(Actions): self.bookmarks = Bookmarks( bookmarkfile=relpath_conf('bookmarks'), bookmarktype=Directory, - autosave=False) + autosave=self.settings.autosave_bookmarks) self.bookmarks.load() else: diff --git a/ranger/shared/settings.py b/ranger/shared/settings.py index ec7abedf..644d1318 100644 --- a/ranger/shared/settings.py +++ b/ranger/shared/settings.py @@ -3,7 +3,7 @@ show_hidden scroll_offset directories_first sort reverse preview_files max_history_size colorscheme collapse_preview auto_load_preview -max_dirsize_for_autopreview +max_dirsize_for_autopreview autosave_bookmarks apps keys """.split() diff --git a/test/tc_bookmarks.py b/test/tc_bookmarks.py new file mode 100644 index 00000000..a0f6bf30 --- /dev/null +++ b/test/tc_bookmarks.py @@ -0,0 +1,73 @@ +if __name__ == '__main__': from __init__ import init; init() + +from os.path import realpath, join, dirname +import unittest +import os +import time + +from ranger.container.bookmarks import Bookmarks + +TESTDIR = realpath(join(dirname(__file__), 'testdir')) +BMFILE = join(TESTDIR, 'bookmarks') + +class TestDisplayable(unittest.TestCase): + def setUp(self): + try: + os.remove(BMFILE) + except: + pass + + def tearDown(self): + try: + os.remove(BMFILE) + except: + pass + + def test_adding_bookmarks(self): + bm = Bookmarks(BMFILE, str, autosave=False) + bm.load() + bm['a'] = 'fooo' + self.assertEqual(bm['a'], 'fooo') + + def test_sharing_bookmarks_between_instances(self): + bm = Bookmarks(BMFILE, str, autosave=True) + bm2 = Bookmarks(BMFILE, str, autosave=True) + + bm.load() + bm2.load() + bm['a'] = 'fooo' + self.assertRaises(KeyError, bm2.__getitem__, 'a') + + bm.save() + bm2.load() + self.assertEqual(bm['a'], bm2['a']) + + bm2['a'] = 'bar' + + bm.save() + bm2.save() + bm.load() + bm2.load() + + self.assertEqual(bm['a'], bm2['a']) + + def test_messing_around(self): + bm = Bookmarks(BMFILE, str, autosave=False) + bm2 = Bookmarks(BMFILE, str, autosave=False) + + bm.load() + bm['a'] = 'car' + + bm2.load() + self.assertRaises(KeyError, bm2.__getitem__, 'a') + + bm2.save() + bm.update() + bm.save() + bm.load() + bm2.load() + + self.assertEqual(bm['a'], bm2['a']) + +if __name__ == '__main__': + unittest.main() |