Fixed #20142 -- Added error handling for fixture setup

TestCase._fixture_setup disables transactions so,
in case of an error, cleanup is needed to re-enable
transactions, otherwise following TransactionTestCase
would fail.
This commit is contained in:
Filipa Andrade 2013-05-18 17:04:52 +02:00
parent d5ce2ff5e4
commit 5883ae56b3
1 changed files with 11 additions and 7 deletions

View File

@ -843,6 +843,7 @@ class TestCase(TransactionTestCase):
for db in self._databases_names(include_mirrors=False): for db in self._databases_names(include_mirrors=False):
if hasattr(self, 'fixtures'): if hasattr(self, 'fixtures'):
try:
call_command('loaddata', *self.fixtures, call_command('loaddata', *self.fixtures,
**{ **{
'verbosity': 0, 'verbosity': 0,
@ -850,6 +851,9 @@ class TestCase(TransactionTestCase):
'database': db, 'database': db,
'skip_validation': True, 'skip_validation': True,
}) })
except Exception:
self._fixture_teardown()
raise
def _fixture_teardown(self): def _fixture_teardown(self):
if not connections_support_transactions(): if not connections_support_transactions():