diff --git a/senpy/plugins/__init__.py b/senpy/plugins/__init__.py index 517d957..63bb66e 100644 --- a/senpy/plugins/__init__.py +++ b/senpy/plugins/__init__.py @@ -98,7 +98,7 @@ class ShelfMixin(object): if os.path.isfile(self.shelf_file): try: self.__dict__['_sh'] = pickle.load(open(self.shelf_file, 'rb')) - except (EOFError, pickle.UnpicklingError): + except (IndexError, EOFError, pickle.UnpicklingError): logger.warning('{} has a corrupted shelf file!'.format(self.id)) if not self.get('force_shelf', False): raise diff --git a/tests/test_plugins.py b/tests/test_plugins.py index 3f874f5..dbfe60d 100644 --- a/tests/test_plugins.py +++ b/tests/test_plugins.py @@ -91,8 +91,8 @@ class PluginsTest(TestCase): with open(emptyfile, 'w+b'), open(invalidfile, 'w+b') as inf: inf.write(b'ohno') - files = {emptyfile: ['empty file', EOFError], - invalidfile: ['invalid file', pickle.UnpicklingError]} + files = {emptyfile: ['empty file', (EOFError, IndexError)], + invalidfile: ['invalid file', (pickle.UnpicklingError, IndexError)]} for fn in files: with open(fn, 'rb') as f: @@ -105,7 +105,6 @@ class PluginsTest(TestCase): assert os.path.isfile(a.shelf_file) print('Shelf file: %s' % a.shelf_file) with self.assertRaises(error): - # By default, raise an error a.sh['a'] = 'fromA' a.save() del a._sh