diff --git a/senpy/plugins.py b/senpy/plugins.py index b3dc37a..696d4ec 100644 --- a/senpy/plugins.py +++ b/senpy/plugins.py @@ -112,6 +112,9 @@ class SenpyPlugin(Leaf): def id(self): return "{}_{}".format(self.name, self.version) + def __del__(self): + ''' Destructor, to make sure all the resources are freed ''' + self.deactivate() class SentimentPlugin(SenpyPlugin): @@ -139,8 +142,8 @@ class ShelfMixin(object): @sh.deleter def sh(self): - if hasattr(self, '_sh'): - del(self._sh) + if os.path.isfile(self.shelf_file): + os.remove(self.shelf_file) @property def shelf_file(self): diff --git a/setup.py b/setup.py index c4077b2..ed022b8 100644 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ except AttributeError: install_reqs = [str(ir.req) for ir in install_reqs] test_reqs = [str(ir.req) for ir in test_reqs] -VERSION = "0.4.11rc" +VERSION = "0.4.11" setup( name='senpy', diff --git a/tests/plugins_test/__init__.py b/tests/plugins_test/__init__.py index b1a6571..2c179a3 100644 --- a/tests/plugins_test/__init__.py +++ b/tests/plugins_test/__init__.py @@ -1,3 +1,5 @@ +#!/bin/env python2 +# -*- py-which-shell: "python2"; -*- import os import logging import shelve @@ -13,29 +15,56 @@ from senpy.models import Response, Entry from senpy.plugins import SenpyPlugin, ShelfMixin -class ModelsTest(TestCase): +class ShelfTest(ShelfMixin, SenpyPlugin): - # def test_shelf(self): - # class ShelfTest(ShelfMixin): - # pass - # a = ShelfTest() - # print(type(a.sh)) - # assert(False) + def test(self, key=None, value=None): + assert isinstance(self.sh, shelve.Shelf) + assert key in self.sh + print('Checking: sh[{}] == {}'.format(key, value)) + print('SH[{}]: {}'.format(key, self.sh[key])) + assert self.sh[key] == value + + + +class ModelsTest(TestCase): + shelf_file = 'shelf_test.db' + + + def tearDown(self): + if os.path.isfile(self.shelf_file): + os.remove(self.shelf_file) + + setUp = tearDown def test_shelf(self): - class ShelfTest(ShelfMixin, SenpyPlugin): - pass - a = ShelfTest({'name': 'shelve', 'version': 'test'}) - print(type(a.sh)) - a.context = "ohno" - del a.context - print(a) - a.sh['classifier'] = {'name': 'ohno'} - assert a.name == 'shelve' - assert isinstance(a.sh, shelve.Shelf) + ''' A shelf is created and the value is stored ''' + a = ShelfTest(info={'name': 'shelve', + 'version': 'test', + 'shelf_file': self.shelf_file}) + assert a.sh == {} + assert a.shelf_file == self.shelf_file + + a.sh['a'] = 'fromA' + + a.test(key='a', value='fromA') + del(a) + assert os.path.isfile(self.shelf_file) + sh = shelve.open(self.shelf_file) + assert sh['a'] == 'fromA' + + + def test_two(self): + ''' Reusing the values of a previous shelf ''' + a = ShelfTest(info={'name': 'shelve', + 'version': 'test', + 'shelf_file': self.shelf_file}) + print('Shelf file: %s' % a.shelf_file) + a.sh['a'] = 'fromA' a.close() - b = ShelfTest({'name': 'shelve', 'version': 'test'}) - assert b.name == 'shelve' - assert b.sh['classifier'] - assert b.sh['classifier']['name'] == 'ohno' - assert isinstance(b.sh, shelve.Shelf) + + b = ShelfTest(info={'name': 'shelve', + 'version': 'test', + 'shelf_file': self.shelf_file}) + b.test(key='a', value='fromA') + b.sh['a'] = 'fromB' + assert b.sh['a'] == 'fromB'