diff --git a/rhc/database/db.py b/rhc/database/db.py index 800d7ef..ad966ac 100644 --- a/rhc/database/db.py +++ b/rhc/database/db.py @@ -22,7 +22,6 @@ THE SOFTWARE. ''' import pymysql -import threading class _DB(object): @@ -55,7 +54,7 @@ def setup(self, dirty=False, database_map=None, commit=True, close=False, delta= return self @property - def delta(self): + def delta(self): ''' only specify changed columns on update ''' return self.__delta diff --git a/rhc/database/test/test_basic.py b/rhc/database/test/test_basic.py index c5ad997..eea72ef 100644 --- a/rhc/database/test/test_basic.py +++ b/rhc/database/test/test_basic.py @@ -1,5 +1,6 @@ from __future__ import absolute_import import pytest +import weakref from rhc.database.dao import DAO @@ -103,3 +104,22 @@ def test_join(data): assert len(names) == 2 assert 'fred' in names assert 'sally' in names + + +def test_dao_cleanup_from_save(db): + obj = Parent(foo=1, bar=2).save() + ref = weakref.ref(obj) + assert obj is ref() + obj = 0 # dereference + assert ref() is None + + +def test_dao_cleanup_from_load(db): + # save object and remember id + obj_id = Parent(foo=1, bar=2).save().id + assert obj_id + obj = Parent.load(obj_id) + ref = weakref.ref(obj) + assert ref() is obj + obj = 0 + assert ref() is None