mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	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 38bc581bc0 from master.
			
			
This commit is contained in:
		| @@ -640,8 +640,7 @@ class FkConstraintsTests(TransactionTestCase): | ||||
|         """ | ||||
|         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 @@ class FkConstraintsTests(TransactionTestCase): | ||||
|                 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 @@ class FkConstraintsTests(TransactionTestCase): | ||||
|                     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) | ||||
|             transaction.set_rollback(True) | ||||
|  | ||||
|  | ||||
| class ThreadTests(TestCase): | ||||
|   | ||||
| @@ -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 @@ class TestNoInitialDataLoading(TransactionTestCase): | ||||
|                 load_initial_data=False | ||||
|             ) | ||||
|             self.assertQuerysetEqual(Book.objects.all(), []) | ||||
|             transaction.rollback() | ||||
|         finally: | ||||
|             transaction.set_autocommit(True) | ||||
|  | ||||
|  | ||||
|     def test_flush(self): | ||||
| @@ -54,8 +50,7 @@ class TestNoInitialDataLoading(TransactionTestCase): | ||||
|             lambda a: a.name | ||||
|         ) | ||||
|  | ||||
|         transaction.set_autocommit(False) | ||||
|         try: | ||||
|         with transaction.atomic(): | ||||
|             management.call_command( | ||||
|                 'flush', | ||||
|                 verbosity=0, | ||||
| @@ -63,9 +58,6 @@ class TestNoInitialDataLoading(TransactionTestCase): | ||||
|                 load_initial_data=False | ||||
|             ) | ||||
|             self.assertQuerysetEqual(Book.objects.all(), []) | ||||
|             transaction.rollback() | ||||
|         finally: | ||||
|             transaction.set_autocommit(True) | ||||
|  | ||||
|  | ||||
| class FixtureTestCase(TestCase): | ||||
|   | ||||
| @@ -660,22 +660,15 @@ class TestTicket11101(TransactionTestCase): | ||||
|         'django.contrib.contenttypes', | ||||
|     ] | ||||
|  | ||||
|     def ticket_11101(self): | ||||
|     @skipUnlessDBFeature('supports_transactions') | ||||
|     def test_ticket_11101(self): | ||||
|         """Test that fixtures can be rolled back (ticket #11101).""" | ||||
|         with transaction.atomic(): | ||||
|             management.call_command( | ||||
|                 'loaddata', | ||||
|                 'thingy.json', | ||||
|                 verbosity=0, | ||||
|             ) | ||||
|             self.assertEqual(Thingy.objects.count(), 1) | ||||
|         transaction.rollback() | ||||
|             transaction.set_rollback(True) | ||||
|         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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user