On May 5, 4:31 pm, Andreas Pelme <andr...@pelme.se> wrote: > > On May 4, 2:30 pm, Karen Tracey <kmtra...@gmail.com (http://gmail.com)> > > wrote: > > Thanks for the link. While reading the previous threads I spotted at > > one blocker issue: the first TransactionTestCase will not start with > > zeroed database sequence values. To prevent this one would need to > > flush the DB before the first TransactionTestCase. In addition, if the > > goal is to get rid of test ordering, then one would need to flush > > before every test case which isn't good. Getting rid of the > > requirement to reset sequences between test cases would be good. > > Oracle doesn't reset the sequences reliably currently just for > > example. But I don't think we can change that for backwards > > compatibility reasons. While tests that rely on sequence values are > > IMHO broken, changing this would result in numerous broken tests for > > users upgrading Django. Notably normal TestCases do not do sequence > > resetting at all currently. > > > This is a blocker: why change the flushing from pre-test to post-test > > if the end result is that you can't run the tests in arbitrary order > > anyways? Or if you want to be able to run them in arbitrary order you > > will need to run at least the sequence resets pre-test anyways. > > Resetting sequences can be really expensive, so there goes any > > potential savings in speed. > > > Ideas? > > Agreed, it is indeed backward incompatible. However, I think we can make the > upgrade for those affected very anyways: > > * Document this change properly in the release notes and in the testing docs > * Document that tests should not depend on hard coded primary key values > (this is already hinted in the testing docs where > TestCase/TransactionTestCase is described) > * Add a reset_sequences attribute on TransactionTestCase, that can be > applied to existing TransactionTestCase tests that already uses hard coded > primary key value - which will reset sequences *before* the test run, just > like before. (And those tests will also flush the database after they are run) > > I have updated the pull request with the reset_sequences attribute and an > initial draft for the release notes and > documentation:https://github.com/django/django/pull/45 > > 1.1 introduced a far greater change to testing behavior (the TestCase with > transaction/rollback), if that change was considered acceptable from a > backward compatibility perspective, this change should be too. When that > happened, the same problem appeared since TestCase does not reset sequences. > (Yeah, just because it was done in the past does not make it OK now, but that > should give some perspective). > > I guess it boils down to where to draw the line for backward compatibility > here. :-) I personally think it is acceptable since we can offer a very easy > fix for the existing (already broken) tests out there.
I would like to just get rid of the sequence resets. Oracle doesn't do it currently, TestCase doesn't do it, and IMO assuming the IDs are going to start from 1 is an assumption one should not make. Objections to just getting rid of the sequence resets altogether (with the opt-in flag)? - Anssi -- 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.