Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Avoided transaction.set_autocommit in tests.

It doesn't work as one might expect on a certain database backend where
autocommits_when_autocommit_is_off = True. That backend happens to be
popular for running tests.

Backport of 38bc581 from master.
  • Loading branch information...
commit d200405471957fa67e21b2cbf08390cefbcd8482 1 parent ae685e5
@aaugustin aaugustin authored
View
33 tests/backends/tests.py
@@ -640,8 +640,7 @@ def test_disable_constraint_checks_manually(self):
"""
When constraint checks are disabled, should be able to write bad data without IntegrityErrors.
"""
- transaction.set_autocommit(False)
- try:
+ with transaction.atomic():
# Create an Article.
models.Article.objects.create(headline="Test article", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r)
# Retrive it from the DB
@@ -653,17 +652,13 @@ def test_disable_constraint_checks_manually(self):
connection.enable_constraint_checking()
except IntegrityError:
self.fail("IntegrityError should not have occurred.")
- finally:
- transaction.rollback()
- finally:
- transaction.set_autocommit(True)
+ transaction.set_rollback(True)
def test_disable_constraint_checks_context_manager(self):
"""
When constraint checks are disabled (using context manager), should be able to write bad data without IntegrityErrors.
"""
- transaction.set_autocommit(False)
- try:
+ with transaction.atomic():
# Create an Article.
models.Article.objects.create(headline="Test article", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r)
# Retrive it from the DB
@@ -674,31 +669,23 @@ def test_disable_constraint_checks_context_manager(self):
a.save()
except IntegrityError:
self.fail("IntegrityError should not have occurred.")
- finally:
- transaction.rollback()
- finally:
- transaction.set_autocommit(True)
+ transaction.set_rollback(True)
def test_check_constraints(self):
"""
Constraint checks should raise an IntegrityError when bad data is in the DB.
"""
- try:
- transaction.set_autocommit(False)
+ with transaction.atomic():
# Create an Article.
models.Article.objects.create(headline="Test article", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r)
# Retrive it from the DB
a = models.Article.objects.get(headline="Test article")
a.reporter_id = 30
- try:
- with connection.constraint_checks_disabled():
- a.save()
- with self.assertRaises(IntegrityError):
- connection.check_constraints()
- finally:
- transaction.rollback()
- finally:
- transaction.set_autocommit(True)
+ with connection.constraint_checks_disabled():
+ a.save()
+ with self.assertRaises(IntegrityError):
+ connection.check_constraints()
+ transaction.set_rollback(True)
class ThreadTests(TestCase):
View
12 tests/fixtures_model_package/tests.py
@@ -30,8 +30,7 @@ class TestNoInitialDataLoading(TransactionTestCase):
available_apps = ['fixtures_model_package']
def test_syncdb(self):
- transaction.set_autocommit(False)
- try:
+ with transaction.atomic():
Book.objects.all().delete()
management.call_command(
@@ -40,9 +39,6 @@ def test_syncdb(self):
load_initial_data=False
)
self.assertQuerysetEqual(Book.objects.all(), [])
- transaction.rollback()
- finally:
- transaction.set_autocommit(True)
def test_flush(self):
@@ -54,8 +50,7 @@ def test_flush(self):
lambda a: a.name
)
- transaction.set_autocommit(False)
- try:
+ with transaction.atomic():
management.call_command(
'flush',
verbosity=0,
@@ -63,9 +58,6 @@ def test_flush(self):
load_initial_data=False
)
self.assertQuerysetEqual(Book.objects.all(), [])
- transaction.rollback()
- finally:
- transaction.set_autocommit(True)
class FixtureTestCase(TestCase):
View
25 tests/fixtures_regress/tests.py
@@ -660,22 +660,15 @@ class TestTicket11101(TransactionTestCase):
'django.contrib.contenttypes',
]
- def ticket_11101(self):
- management.call_command(
- 'loaddata',
- 'thingy.json',
- verbosity=0,
- )
- self.assertEqual(Thingy.objects.count(), 1)
- transaction.rollback()
- self.assertEqual(Thingy.objects.count(), 0)
- transaction.commit()
-
@skipUnlessDBFeature('supports_transactions')
def test_ticket_11101(self):
"""Test that fixtures can be rolled back (ticket #11101)."""
- transaction.set_autocommit(False)
- try:
- self.ticket_11101()
- finally:
- transaction.set_autocommit(True)
+ with transaction.atomic():
+ management.call_command(
+ 'loaddata',
+ 'thingy.json',
+ verbosity=0,
+ )
+ self.assertEqual(Thingy.objects.count(), 1)
+ transaction.set_rollback(True)
+ self.assertEqual(Thingy.objects.count(), 0)
Please sign in to comment.
Something went wrong with that request. Please try again.