On Friday 4 May 2012 at 13:30, Karen Tracey wrote: > On Fri, May 4, 2012 at 4:46 AM, Andreas Pelme <andr...@pelme.se > (mailto:andr...@pelme.se)> wrote: > > > > That's a good question. Anyone who wrote to original > > TransactionTestCase/reordering implementation that wants to chime in? :-) > > I worked on the test speedups that introduced TransactionTestCase and > I added the re-ordering, but the behavior of database flush being done > at the beginning of a test existed before that work. The conversation > that led to addition of the reordering is here: > > http://groups.google.com/group/django-developers/browse_thread/thread/1e4f4c840b180895/ > > doctests (which we have no more?) play a prominent role in that > discussion. While we have gotten rid of doctests in Django's own > suite, we still support apps which may use doctests in their code, so > anything we do to change when the DB is cleared needs to take that > into account. On the table then was the idea of adding cleanup after > doctests, possibly that would need to be re-considered if you want to > move the database clearing to the end of everything rather than the > beginning of TransactionTestCase.
#12408 is related here, which is caused by TransactionTestCase's not cleaning up after themselves. Rather than changing the test order to TestCase -> doctests -> TransactionTestCase I think the solution below is better. Karens proposed a fix for this (#2) in the above thread [1], it basically says: 1) Make TransactionTestCase clean up after itself 2) Order the test suite to make sure doctests are always run *last* That would run all unittest-style test cases first (the order of TestCase / TransactionTestCase will not be important), and last, all doctests. A test suite that have doctests that *expects* state to be left from a TransactionTestCase before it would be broken by this change. In my opinion, a test suite with such expectations is already very broken and needs to be fixed any way, and should not be considered a blocker to this change (in that case, #12408 is a blocker too, since that effect will be the same). I have updated my pull request to make unittest.TestCase subclasses to run first (i.e. doctests will run after all unit tests): https://github.com/django/django/pull/45 Am I missing something? This seems like the most reliable way to solve this to me. (I originally discovered this when I tried to run my tests with an alternative test runner, which does not order the tests in any particular way. I will still not be able to run doctests that does not clean up after themselves in arbitrary order, but as long as I document that's not supported with my test runner, I don't consider that to be a problem.) Andreas [1] https://groups.google.com/d/msg/django-developers/Hk9MhAsYCJU/fB4rj7F5SXEJ -- You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-developers@googlegroups.com. To unsubscribe from this group, send email to django-developers+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.