From ccab4b041bded4af529ca2ede4dffab0d95fb5f2 Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Sun, 27 Jul 2008 03:32:44 +0000 Subject: [PATCH] Fixed #7981 -- Wrap the manual transaction management in the serializers_regress tests in some "try...finally" blocks. Patch from Leo Soto. git-svn-id: http://code.djangoproject.com/svn/django/trunk@8099 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- .../serializers_regress/tests.py | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/tests/regressiontests/serializers_regress/tests.py b/tests/regressiontests/serializers_regress/tests.py index 9bc5eec1ebf40..f990d57a17f87 100644 --- a/tests/regressiontests/serializers_regress/tests.py +++ b/tests/regressiontests/serializers_regress/tests.py @@ -72,13 +72,13 @@ def inherited_create(pk, klass, data): # 1) we're testing inheritance, not field behaviour, so none # of the field values need to be protected. # 2) saving the child class and having the parent created - # automatically is easier than manually creating both. + # automatically is easier than manually creating both. models.Model.save(instance) created = [instance] for klass,field in instance._meta.parents.items(): created.append(klass.objects.get(id=pk)) return created - + # A set of functions that can be used to compare # test data objects of various kinds def data_compare(testcase, pk, klass, data): @@ -111,7 +111,7 @@ def inherited_compare(testcase, pk, klass, data): instance = klass.objects.get(id=pk) for key,value in data.items(): testcase.assertEqual(value, getattr(instance,key)) - + # Define some data types. Each data type is # actually a pair of functions; one to create # and one to compare objects of that type @@ -274,7 +274,7 @@ def inherited_compare(testcase, pk, klass, data): (data_obj, 800, AutoNowDateTimeData, datetime.datetime(2006,6,16,10,42,37)), (data_obj, 810, ModifyingSaveData, 42), - + (inherited_obj, 900, InheritAbstractModel, {'child_data':37,'parent_data':42}), (inherited_obj, 910, ExplicitInheritBaseModel, {'child_data':37,'parent_data':42}), (inherited_obj, 920, InheritBaseModel, {'child_data':37,'parent_data':42}), @@ -302,17 +302,19 @@ def serializerTest(format, self): objects = [] instance_count = {} transaction.enter_transaction_management() - transaction.managed(True) - for (func, pk, klass, datum) in test_data: - objects.extend(func[0](pk, klass, datum)) - instance_count[klass] = 0 - transaction.commit() - transaction.leave_transaction_management() + try: + transaction.managed(True) + for (func, pk, klass, datum) in test_data: + objects.extend(func[0](pk, klass, datum)) + instance_count[klass] = 0 + transaction.commit() + finally: + transaction.leave_transaction_management() # Get a count of the number of objects created for each class for klass in instance_count: instance_count[klass] = klass.objects.count() - + # Add the generic tagged objects to the object list objects.extend(Tag.objects.all()) @@ -322,11 +324,13 @@ def serializerTest(format, self): # Flush the database and recreate from the serialized data management.call_command('flush', verbosity=0, interactive=False) transaction.enter_transaction_management() - transaction.managed(True) - for obj in serializers.deserialize(format, serialized_data): - obj.save() - transaction.commit() - transaction.leave_transaction_management() + try: + transaction.managed(True) + for obj in serializers.deserialize(format, serialized_data): + obj.save() + transaction.commit() + finally: + transaction.leave_transaction_management() # Assert that the deserialized data is the same # as the original source