~linaro-validation/django-testscenarios/trunk

Viewing all changes in revision 9.

  • Committer: Zygmunt Krynicki
  • Date: 2010-12-07 22:11:58 UTC
  • mfrom: (5.1.17 devel)
  • Revision ID: zygmunt.krynicki@linaro.org-20101207221158-kpw7a1xg2642kstn
Fix subtle bug in TransactionTestCase inheritance

A subtle bug was found that caused django_testscenarios.TestCase and
django_testscenarios.TransactionTestCase (regardless of scenarios) to be a
subclass of django.test.TestCase. This caused a subtle side effect of possible
test failure due to the optimisation of database cleanup code done inside
Django. That optimisation sorts all the test cases inside a test suite so that
all tests _not_ using transactions (and hence inheriting from
django.test.TestCase) would come first. The Django database cleanup code
depends on this property.

Due to the fixed bug this property would no longer be preserved. This caused a
possible situation where a run of plain django.test.TestCase would be performed
in a dirty database left over by the preceding run of
django.test.TransactionTestCase.  The ordering of tests depends on the test
loader iteration of a python module's dictionary so it is not deterministic.

To solve the problem django_testscenarios.TestCase inherits from
django.test.TestCase and django_testscenarios.TransactionTestCase inherits from
django.test.TransactionTestCase and _does not_ inherits from
django.test.TestCase

Identical fix was applied to the *WithScenarios classes.

expand all expand all

Show diffs side-by-side

added added

removed removed

Lines of Context: