#14975 closed (fixed)
TransactionTestCases are broken by django.contrib.auth in 1.2.4
Reported by: | Randy Barlow | Owned by: | nobody |
---|---|---|---|
Component: | Testing framework | Version: | 1.2 |
Severity: | Keywords: | blocker, regression | |
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
I tried to upgrade my project to 1.2.4, and found that my TransactionTestCases were failing. I discovered that they would pass by themselves, but they would fail if I ran the django.contrib.auth tests first.
I made a very simple Django project that has an app with a single TransactionTestCase. It runs a self.assertTrue(True). If you run the testapp test by itself, it will pass, but if you run the auth tests first, it will fail in this way:
====================================================================== ERROR: test_test (testapp.tests.SimpleTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/rbarlow/.virtualenvs/titles-db/lib/python2.6/site-packages/django/test/testcases.py", line 257, in __call__ self._pre_setup() File "/home/rbarlow/.virtualenvs/titles-db/lib/python2.6/site-packages/django/test/testcases.py", line 224, in _pre_setup self._fixture_setup() File "/home/rbarlow/.virtualenvs/titles-db/lib/python2.6/site-packages/django/test/testcases.py", line 236, in _fixture_setup call_command('flush', verbosity=0, interactive=False, database=db) File "/home/rbarlow/.virtualenvs/titles-db/lib/python2.6/site-packages/django/core/management/__init__.py", line 166, in call_command return klass.execute(*args, **defaults) File "/home/rbarlow/.virtualenvs/titles-db/lib/python2.6/site-packages/django/core/management/base.py", line 220, in execute output = self.handle(*args, **options) File "/home/rbarlow/.virtualenvs/titles-db/lib/python2.6/site-packages/django/core/management/base.py", line 351, in handle return self.handle_noargs(**options) File "/home/rbarlow/.virtualenvs/titles-db/lib/python2.6/site-packages/django/core/management/commands/flush.py", line 75, in handle_noargs emit_post_sync_signal(all_models, verbosity, interactive, db) File "/home/rbarlow/.virtualenvs/titles-db/lib/python2.6/site-packages/django/core/management/sql.py", line 182, in emit_post_sync_signal interactive=interactive, db=db) File "/home/rbarlow/.virtualenvs/titles-db/lib/python2.6/site-packages/django/dispatch/dispatcher.py", line 172, in send response = receiver(signal=self, sender=sender, **named) File "/home/rbarlow/.virtualenvs/titles-db/lib/python2.6/site-packages/django/contrib/auth/management/__init__.py", line 28, in create_permissions defaults={'name': name, 'content_type': ctype}) File "/home/rbarlow/.virtualenvs/titles-db/lib/python2.6/site-packages/django/db/models/manager.py", line 135, in get_or_create return self.get_query_set().get_or_create(**kwargs) File "/home/rbarlow/.virtualenvs/titles-db/lib/python2.6/site-packages/django/db/models/query.py", line 383, in get_or_create transaction.savepoint_rollback(sid, using=self.db) File "/home/rbarlow/.virtualenvs/titles-db/lib/python2.6/site-packages/django/db/transaction.py", line 242, in savepoint_rollback connection._savepoint_rollback(sid) File "/home/rbarlow/.virtualenvs/titles-db/lib/python2.6/site-packages/django/db/backends/__init__.py", line 61, in _savepoint_rollback self.cursor().execute(self.ops.savepoint_rollback_sql(sid)) File "/home/rbarlow/.virtualenvs/titles-db/lib/python2.6/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 44, in execute return self.cursor.execute(query, args) DatabaseError: no such savepoint
I put this into the Testing framework component, but it may be more appropriate in the Authentication component.
Django rocks, thanks for working on it!
Attachments (1)
Change History (12)
by , 14 years ago
Attachment: | test_project.tar.bz2 added |
---|
comment:2 by , 14 years ago
milestone: | → 1.3 |
---|
Further narrowing -- you can get the failure by just running auth.BackendTest.test_custom_perms before your TransactionTestCase, but only on the 1.2 branch. trunk seems to be unaffected.
This is disturbingly similar to #14925, but I don't think it's *exactly* the same bug, so I'll leave this open for the moment. Regardless, it's a blocker for 1.3.
comment:3 by , 14 years ago
Triage Stage: | Unreviewed → Accepted |
---|
comment:4 by , 14 years ago
Hi russellm! May I request that a 1.2.5 release be made with a fix for this issue? Since 1.2.4 was a security release, I'd really like to be able to use it for my project, but I can't test it to verify that my application is working properly. If a 1.2.5 release were made, I'd be able to get the 1.2.4 security updates sooner.
comment:5 by , 14 years ago
There will definitely be a 1.2.5 release -- it's just a matter of timing. When we release 1.3 final (currently scheduled for the end of the month), we will also release 1.2.5.
The question is whether we need to do an interim 1.2.5 release, and then release 1.2.6 when 1.3 happens. As a result of my triage binge last week, I noticed a couple of regressions that have emerged on 1.2.4, so an interim release may be warranted.
comment:6 by , 14 years ago
Keywords: | blocker regression added |
---|
comment:8 by , 14 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
A small Django project that demonstrates the issue