#33256: Some schema tests don't clean up their tables
-------------------------------------+-------------------------------------
     Reporter:  Tim Graham           |                    Owner:  banani720
         Type:                       |                   Status:  assigned
  Cleanup/optimization               |
    Component:  Database layer       |                  Version:  dev
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:
     Keywords:                       |             Triage Stage:  Accepted
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  1                    |                    UI/UX:  0
-------------------------------------+-------------------------------------

Comment (by Mohammad Ali Mehdizadeh):

 Replying to [ticket:33256 Tim Graham]:
 > Some test errors on a second consecutive run of `./tests/runtests.py
 --settings=test_postgres  --parallel=1 --keepdb schema` shows that some
 tests leave behind their tables. Attached is an initial patch for a couple
 of the cases.
 > {{{
 > ======================================================================
 > ERROR: test_add_foreign_key_quoted_db_table (schema.tests.SchemaTests)
 > ----------------------------------------------------------------------
 > Traceback (most recent call last):
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 82, in
 _execute
 >     return self.cursor.execute(sql)
 > psycopg2.errors.DuplicateTable: relation "table_author_double_quoted"
 already exists
 >
 >
 > The above exception was the direct cause of the following exception:
 >
 > Traceback (most recent call last):
 >   File "/home/tim/code/django/django/test/utils.py", line 437, in inner
 >     return func(*args, **kwargs)
 >   File "/home/tim/code/django/django/test/testcases.py", line 1305, in
 skip_wrapper
 >     return test_func(*args, **kwargs)
 >   File "/home/tim/code/django/tests/schema/tests.py", line 3229, in
 test_add_foreign_key_quoted_db_table
 >     editor.create_model(Author)
 >   File "/home/tim/code/django/django/db/backends/base/schema.py", line
 355, in create_model
 >     self.execute(sql, params or None)
 >   File "/home/tim/code/django/django/db/backends/base/schema.py", line
 151, in execute
 >     cursor.execute(sql, params)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 66, in
 execute
 >     return self._execute_with_wrappers(sql, params, many=False,
 executor=self._execute)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 75, in
 _execute_with_wrappers
 >     return executor(sql, params, many, context)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 84, in
 _execute
 >     return self.cursor.execute(sql, params)
 >   File "/home/tim/code/django/django/db/utils.py", line 90, in __exit__
 >     raise dj_exc_value.with_traceback(traceback) from exc_value
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 82, in
 _execute
 >     return self.cursor.execute(sql)
 > django.db.utils.ProgrammingError: relation "table_author_double_quoted"
 already exists
 >
 >
 > ======================================================================
 > ERROR: test_add_foreign_object (schema.tests.SchemaTests)
 > ----------------------------------------------------------------------
 > Traceback (most recent call last):
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 82, in
 _execute
 >     return self.cursor.execute(sql)
 > psycopg2.errors.DuplicateTable: relation "schema_bookforeignobj" already
 exists
 >
 >
 > The above exception was the direct cause of the following exception:
 >
 > Traceback (most recent call last):
 >   File "/home/tim/code/django/tests/schema/tests.py", line 3238, in
 test_add_foreign_object
 >     editor.create_model(BookForeignObj)
 >   File "/home/tim/code/django/django/db/backends/base/schema.py", line
 355, in create_model
 >     self.execute(sql, params or None)
 >   File "/home/tim/code/django/django/db/backends/base/schema.py", line
 151, in execute
 >     cursor.execute(sql, params)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 66, in
 execute
 >     return self._execute_with_wrappers(sql, params, many=False,
 executor=self._execute)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 75, in
 _execute_with_wrappers
 >     return executor(sql, params, many, context)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 84, in
 _execute
 >     return self.cursor.execute(sql, params)
 >   File "/home/tim/code/django/django/db/utils.py", line 90, in __exit__
 >     raise dj_exc_value.with_traceback(traceback) from exc_value
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 82, in
 _execute
 >     return self.cursor.execute(sql)
 > django.db.utils.ProgrammingError: relation "schema_bookforeignobj"
 already exists
 >
 >
 > ======================================================================
 > ERROR: test_remove_db_index_doesnt_remove_custom_indexes
 (schema.tests.SchemaTests)
 > Changing db_index to False doesn't remove indexes from Meta.indexes.
 > ----------------------------------------------------------------------
 > Traceback (most recent call last):
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 82, in
 _execute
 >     return self.cursor.execute(sql)
 > psycopg2.errors.DuplicateTable: relation "schema_authorwithindexedname"
 already exists
 >
 >
 > The above exception was the direct cause of the following exception:
 >
 > Traceback (most recent call last):
 >   File "/home/tim/code/django/tests/schema/tests.py", line 2659, in
 test_remove_db_index_doesnt_remove_custom_indexes
 >     editor.create_model(AuthorWithIndexedName)
 >   File "/home/tim/code/django/django/db/backends/base/schema.py", line
 355, in create_model
 >     self.execute(sql, params or None)
 >   File "/home/tim/code/django/django/db/backends/base/schema.py", line
 151, in execute
 >     cursor.execute(sql, params)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 66, in
 execute
 >     return self._execute_with_wrappers(sql, params, many=False,
 executor=self._execute)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 75, in
 _execute_with_wrappers
 >     return executor(sql, params, many, context)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 84, in
 _execute
 >     return self.cursor.execute(sql, params)
 >   File "/home/tim/code/django/django/db/utils.py", line 90, in __exit__
 >     raise dj_exc_value.with_traceback(traceback) from exc_value
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 82, in
 _execute
 >     return self.cursor.execute(sql)
 > django.db.utils.ProgrammingError: relation
 "schema_authorwithindexedname" already exists
 >
 >
 > ======================================================================
 > ERROR: test_remove_field_unique_does_not_remove_meta_constraints
 (schema.tests.SchemaTests)
 > ----------------------------------------------------------------------
 > Traceback (most recent call last):
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 82, in
 _execute
 >     return self.cursor.execute(sql)
 > psycopg2.errors.DuplicateTable: relation "schema_authorwithuniquename"
 already exists
 >
 >
 > The above exception was the direct cause of the following exception:
 >
 > Traceback (most recent call last):
 >   File "/home/tim/code/django/django/test/testcases.py", line 1305, in
 skip_wrapper
 >     return test_func(*args, **kwargs)
 >   File "/home/tim/code/django/tests/schema/tests.py", line 2057, in
 test_remove_field_unique_does_not_remove_meta_constraints
 >     editor.create_model(AuthorWithUniqueName)
 >   File "/home/tim/code/django/django/db/backends/base/schema.py", line
 355, in create_model
 >     self.execute(sql, params or None)
 >   File "/home/tim/code/django/django/db/backends/base/schema.py", line
 151, in execute
 >     cursor.execute(sql, params)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 66, in
 execute
 >     return self._execute_with_wrappers(sql, params, many=False,
 executor=self._execute)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 75, in
 _execute_with_wrappers
 >     return executor(sql, params, many, context)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 84, in
 _execute
 >     return self.cursor.execute(sql, params)
 >   File "/home/tim/code/django/django/db/utils.py", line 90, in __exit__
 >     raise dj_exc_value.with_traceback(traceback) from exc_value
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 82, in
 _execute
 >     return self.cursor.execute(sql)
 > django.db.utils.ProgrammingError: relation "schema_authorwithuniquename"
 already exists
 >
 >
 > ======================================================================
 > ERROR: test_remove_index_together_does_not_remove_meta_indexes
 (schema.tests.SchemaTests)
 > ----------------------------------------------------------------------
 > Traceback (most recent call last):
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 82, in
 _execute
 >     return self.cursor.execute(sql)
 > psycopg2.errors.DuplicateTable: relation
 "schema_authorwithindexednameandbirthday" already exists
 >
 >
 > The above exception was the direct cause of the following exception:
 >
 > Traceback (most recent call last):
 >   File "/home/tim/code/django/django/test/testcases.py", line 1305, in
 skip_wrapper
 >     return test_func(*args, **kwargs)
 >   File "/home/tim/code/django/tests/schema/tests.py", line 2554, in
 test_remove_index_together_does_not_remove_meta_indexes
 >     editor.create_model(AuthorWithIndexedNameAndBirthday)
 >   File "/home/tim/code/django/django/db/backends/base/schema.py", line
 355, in create_model
 >     self.execute(sql, params or None)
 >   File "/home/tim/code/django/django/db/backends/base/schema.py", line
 151, in execute
 >     cursor.execute(sql, params)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 66, in
 execute
 >     return self._execute_with_wrappers(sql, params, many=False,
 executor=self._execute)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 75, in
 _execute_with_wrappers
 >     return executor(sql, params, many, context)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 84, in
 _execute
 >     return self.cursor.execute(sql, params)
 >   File "/home/tim/code/django/django/db/utils.py", line 90, in __exit__
 >     raise dj_exc_value.with_traceback(traceback) from exc_value
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 82, in
 _execute
 >     return self.cursor.execute(sql)
 > django.db.utils.ProgrammingError: relation
 "schema_authorwithindexednameandbirthday" already exists
 >
 >
 > ======================================================================
 > ERROR: test_remove_unique_together_does_not_remove_meta_constraints
 (schema.tests.SchemaTests)
 > ----------------------------------------------------------------------
 > Traceback (most recent call last):
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 82, in
 _execute
 >     return self.cursor.execute(sql)
 > psycopg2.errors.DuplicateTable: relation
 "schema_authorwithuniquenameandbirthday" already exists
 >
 >
 > The above exception was the direct cause of the following exception:
 >
 > Traceback (most recent call last):
 >   File "/home/tim/code/django/django/test/testcases.py", line 1305, in
 skip_wrapper
 >     return test_func(*args, **kwargs)
 >   File "/home/tim/code/django/tests/schema/tests.py", line 2176, in
 test_remove_unique_together_does_not_remove_meta_constraints
 >     editor.create_model(AuthorWithUniqueNameAndBirthday)
 >   File "/home/tim/code/django/django/db/backends/base/schema.py", line
 355, in create_model
 >     self.execute(sql, params or None)
 >   File "/home/tim/code/django/django/db/backends/base/schema.py", line
 151, in execute
 >     cursor.execute(sql, params)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 66, in
 execute
 >     return self._execute_with_wrappers(sql, params, many=False,
 executor=self._execute)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 75, in
 _execute_with_wrappers
 >     return executor(sql, params, many, context)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 84, in
 _execute
 >     return self.cursor.execute(sql, params)
 >   File "/home/tim/code/django/django/db/utils.py", line 90, in __exit__
 >     raise dj_exc_value.with_traceback(traceback) from exc_value
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 82, in
 _execute
 >     return self.cursor.execute(sql)
 > django.db.utils.ProgrammingError: relation
 "schema_authorwithuniquenameandbirthday" already exists
 >
 >
 > ======================================================================
 > ERROR: test_unique_name_quoting (schema.tests.SchemaTests)
 > ----------------------------------------------------------------------
 > Traceback (most recent call last):
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 84, in
 _execute
 >     return self.cursor.execute(sql, params)
 > psycopg2.errors.DuplicateTable: relation "unique-table" already exists
 >
 >
 > The above exception was the direct cause of the following exception:
 >
 > Traceback (most recent call last):
 >   File "/home/tim/code/django/tests/schema/tests.py", line 1978, in
 test_unique_name_quoting
 >     editor.alter_db_table(TagUniqueRename, old_table_name, 'unique-
 table')
 >   File "/home/tim/code/django/django/db/backends/base/schema.py", line
 474, in alter_db_table
 >     self.execute(self.sql_rename_table % {
 >   File "/home/tim/code/django/django/db/backends/base/schema.py", line
 151, in execute
 >     cursor.execute(sql, params)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 66, in
 execute
 >     return self._execute_with_wrappers(sql, params, many=False,
 executor=self._execute)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 75, in
 _execute_with_wrappers
 >     return executor(sql, params, many, context)
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 84, in
 _execute
 >     return self.cursor.execute(sql, params)
 >   File "/home/tim/code/django/django/db/utils.py", line 90, in __exit__
 >     raise dj_exc_value.with_traceback(traceback) from exc_value
 >   File "/home/tim/code/django/django/db/backends/utils.py", line 84, in
 _execute
 >     return self.cursor.execute(sql, params)
 > django.db.utils.ProgrammingError: relation "unique-table" already exists
 > }}}


 I run the command but I can't produce errors, every thing works nice.

 {{{
 (django-venv) root@DESKTOP-N10114T:/mnt/d/mycode/django#
 ./tests/runtests.py --settings=test_postgres --parallel=1 --keepdb schema
 Testing against Django installed in '/mnt/d/mycode/django/django'
 Found 176 test(s).
 Using existing test database for alias 'default'...
 System check identified no issues (0 silenced).
 
.s................sss...s.ss.....s..ss.sss.s......ss.s......................s.............s.....................s..s....s...s.....................s.............s.....
 .s...s...s
 ----------------------------------------------------------------------
 Ran 176 tests in 11.057s

 OK (skipped=28)
 Preserving test database for alias 'default'...
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/33256#comment:8>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/0107017f84699ce1-d8f92db6-62c0-4ae4-aa65-2e6f6a5b2ec5-000000%40eu-central-1.amazonses.com.

Reply via email to