From 860cf7b9743744c9d21796b227cf21d684fb5519 Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Thu, 14 Mar 2013 21:33:36 +0100 Subject: [PATCH 1/3] Add test_modulepickling_change_cache_dir --- test/test_cache.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 test/test_cache.py diff --git a/test/test_cache.py b/test/test_cache.py new file mode 100644 index 00000000..9f845fc2 --- /dev/null +++ b/test/test_cache.py @@ -0,0 +1,30 @@ +from jedi import settings +from jedi.cache import ParserCacheItem, _ModulePickling + + +ModulePickling = _ModulePickling() + + +def test_modulepickling_change_cache_dir(monkeypatch, tmpdir): + """ + ModulePickling should not save old cache when cache_directory is changed. + + See: `#168 `_ + """ + dir_1 = str(tmpdir.mkdir('first')) + dir_2 = str(tmpdir.mkdir('second')) + + item_1 = ParserCacheItem('fake parser 1') + item_2 = ParserCacheItem('fake parser 2') + path_1 = 'fake path 1' + path_2 = 'fake path 2' + + monkeypatch.setattr(settings, 'cache_directory', dir_1) + ModulePickling.save_module(path_1, item_1) + cached = ModulePickling.load_module(path_1, item_1.change_time - 1) + assert cached == item_1.parser + + monkeypatch.setattr(settings, 'cache_directory', dir_2) + ModulePickling.save_module(path_2, item_2) + cached = ModulePickling.load_module(path_1, item_1.change_time - 1) + assert cached is None From edc7148320454ea3ef1e7d5a2c42c132abf39234 Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Thu, 14 Mar 2013 22:15:34 +0100 Subject: [PATCH 2/3] Fix test_modulepickling_change_cache_dir failure --- jedi/cache.py | 1 + 1 file changed, 1 insertion(+) diff --git a/jedi/cache.py b/jedi/cache.py index e60583f4..84d9ede7 100644 --- a/jedi/cache.py +++ b/jedi/cache.py @@ -238,6 +238,7 @@ class _ModulePickling(object): return parser_cache_item.parser def save_module(self, path, parser_cache_item): + self.__index = None try: files = self._index[self.py_version] except KeyError: From 841d46684f4083af39c61e3ba4384535f98a3974 Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Thu, 14 Mar 2013 22:21:58 +0100 Subject: [PATCH 3/3] Skip test in Python 3. It is a known bug. See: #161 --- test/test_cache.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/test_cache.py b/test/test_cache.py index 9f845fc2..8352fd11 100644 --- a/test/test_cache.py +++ b/test/test_cache.py @@ -1,3 +1,5 @@ +import pytest + from jedi import settings from jedi.cache import ParserCacheItem, _ModulePickling @@ -5,6 +7,7 @@ from jedi.cache import ParserCacheItem, _ModulePickling ModulePickling = _ModulePickling() +@pytest.mark.skipif("sys.version_info >= (3,0)") def test_modulepickling_change_cache_dir(monkeypatch, tmpdir): """ ModulePickling should not save old cache when cache_directory is changed.