#12766 closed (fixed)
custom_pk test fails with psycopg1 backend
Reported by: | Karen Tracey | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | dev |
Severity: | Keywords: | ||
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
F ====================================================================== FAIL: Doctest: modeltests.custom_pk.models.__test__.API_TESTS ---------------------------------------------------------------------- Traceback (most recent call last): File "d:\u\kmt\django\trunk\django\test\_doctest.py", line 2180, in runTest raise self.failureException(self.format_failure(new.getvalue())) AssertionError: Failed doctest test for modeltests.custom_pk.models.__test__.API_TESTS File "D:\u\kmt\django\trunk\tests\modeltests\custom_pk\models.py", line unknown line number, in API_TESTS ---------------------------------------------------------------------- File "D:\u\kmt\django\trunk\tests\modeltests\custom_pk\models.py", line ?, in modeltests.custom_pk.models.__test__.API_T ESTS Failed example: try: sid = transaction.savepoint() Employee.objects.create(employee_code=123, first_name='Fred', last_name='Jones') transaction.savepoint_commit(sid) except Exception, e: if isinstance(e, IntegrityError): transaction.savepoint_rollback(sid) print "Pass" else: print "Fail with %s" % type(e) Expected: Pass Got: Fail with <class 'django.db.utils.DatabaseError'>
Followed by a bunch more errors resulting from the uncleared error on the connection.
Change History (8)
comment:1 by , 15 years ago
comment:2 by , 15 years ago
Note these tests all fail prior to r12352; these errors were not introduced by the implementation of a common class for database errors. With r12351 results show psycopg1 is raising ProgrammingError where IntegrityError is expected by the tests. For example:
F ====================================================================== FAIL: Doctest: modeltests.custom_pk.models.__test__.API_TESTS ---------------------------------------------------------------------- Traceback (most recent call last): File "d:\u\kmt\django\trunk\django\test\_doctest.py", line 2180, in runTest raise self.failureException(self.format_failure(new.getvalue())) AssertionError: Failed doctest test for modeltests.custom_pk.models.__test__.API_TESTS File "D:\u\kmt\django\trunk\tests\modeltests\custom_pk\models.py", line unknown line number, in API_TESTS ---------------------------------------------------------------------- File "D:\u\kmt\django\trunk\tests\modeltests\custom_pk\models.py", line ?, in modeltests.custom_pk.models.__test__.API_TESTS Failed example: try: sid = transaction.savepoint() Employee.objects.create(employee_code=123, first_name='Fred', last_name='Jones') transaction.savepoint_commit(sid) except Exception, e: if isinstance(e, IntegrityError): transaction.savepoint_rollback(sid) print "Pass" else: print "Fail with %s" % type(e) Expected: Pass Got: Fail with <class 'psycopg.ProgrammingError'> ----------------------------------------------------------------------
comment:3 by , 15 years ago
Triage Stage: | Unreviewed → Accepted |
---|
comment:4 by , 15 years ago
Heh, I can't replicate a similar error on #12171 with the psycopg1 backend but this can be. Here is the complete error that I get...
F ====================================================================== FAIL: Doctest: custom_pk.models.__test__.API_TESTS ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/theju/trunk/django/test/_doctest.py", line 2180, in runTest raise self.failureException(self.format_failure(new.getvalue())) AssertionError: Failed doctest test for custom_pk.models.__test__.API_TESTS File "/home/theju/abcd/custom_pk/models.py", line unknown line number, in API_TESTS ---------------------------------------------------------------------- File "/home/theju/abcd/custom_pk/models.py", line ?, in custom_pk.models.__test__.API_TESTS Failed example: try: sid = transaction.savepoint() Employee.objects.create(employee_code=123, first_name='Fred', last_name='Jones') transaction.savepoint_commit(sid) except Exception, e: if isinstance(e, IntegrityError): transaction.savepoint_rollback(sid) print "Pass" else: print "Fail with %s" % type(e) Exception raised: Traceback (most recent call last): File "/home/theju/trunk/django/test/_doctest.py", line 1267, in __run compileflags, 1) in test.globs File "<doctest custom_pk.models.__test__.API_TESTS[35]>", line 7, in <module> transaction.savepoint_rollback(sid) File "/home/theju/trunk/django/db/transaction.py", line 242, in savepoint_rollback connection._savepoint_rollback(sid) File "/home/theju/trunk/django/db/backends/__init__.py", line 61, in _savepoint_rollback self.cursor().execute(self.ops.savepoint_rollback_sql(sid)) File "/home/theju/trunk/django/db/backends/__init__.py", line 75, in cursor cursor = self._cursor() File "/home/theju/trunk/django/db/backends/postgresql/base.py", line 149, in _cursor cursor.execute("SET client_encoding to 'UNICODE'") ProgrammingError: ERROR: current transaction is aborted, commands ignored until end of transaction block SET client_encoding to 'UNICODE' ---------------------------------------------------------------------- File "/home/theju/abcd/custom_pk/models.py", line ?, in custom_pk.models.__test__.API_TESTS Failed example: try: sid = transaction.savepoint() Employee.objects.create(first_name='Tom', last_name='Smith') print 'hello' transaction.savepoint_commit(sid) print 'hello2' except Exception, e: if isinstance(e, IntegrityError): transaction.savepoint_rollback(sid) print "Pass" else: print "Fail with %s" % type(e) Exception raised: Traceback (most recent call last): File "/home/theju/trunk/django/test/_doctest.py", line 1267, in __run compileflags, 1) in test.globs File "<doctest custom_pk.models.__test__.API_TESTS[41]>", line 9, in <module> transaction.savepoint_rollback(sid) File "/home/theju/trunk/django/db/transaction.py", line 242, in savepoint_rollback connection._savepoint_rollback(sid) File "/home/theju/trunk/django/db/backends/__init__.py", line 61, in _savepoint_rollback self.cursor().execute(self.ops.savepoint_rollback_sql(sid)) File "/home/theju/trunk/django/db/backends/__init__.py", line 75, in cursor cursor = self._cursor() File "/home/theju/trunk/django/db/backends/postgresql/base.py", line 149, in _cursor cursor.execute("SET client_encoding to 'UNICODE'") ProgrammingError: ERROR: current transaction is aborted, commands ignored until end of transaction block SET client_encoding to 'UNICODE' ---------------------------------------------------------------------- Ran 1 test in 0.223s FAILED (failures=1) Destroying test database 'default'...
comment:5 by , 15 years ago
These test fail under 1.1 as well, so this is something that has been broken for a while.
comment:6 by , 15 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
force_insert_update, get_or_create, and one_to_one tests all fail similarly. In all cases test is looking for an IntegrityError and getting a DatabaseError instead.