summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2013-08-30 21:28:21 +0200
committerClaude Paroz <claude@2xlibre.net>2013-08-30 21:28:21 +0200
commitb04f8ddbaa57daaefee9eacbab1eaad437d8ff0a (patch)
tree41e71864562d6951a2d93c35503c1515809319dc
parent11cd7388f77aa9d12ab6b57285c3801b237e241b (diff)
Fixed #21005 -- Made schema tests language-independent
Thanks Simon Charette for the review.
-rw-r--r--tests/schema/tests.py24
1 files changed, 9 insertions, 15 deletions
diff --git a/tests/schema/tests.py b/tests/schema/tests.py
index 7c21b58e6c..03c5d79387 100644
--- a/tests/schema/tests.py
+++ b/tests/schema/tests.py
@@ -21,7 +21,6 @@ class SchemaTests(TransactionTestCase):
available_apps = []
models = [Author, AuthorWithM2M, Book, BookWithSlug, BookWithM2M, Tag, TagIndexed, TagM2MTest, TagUniqueRename, UniqueTest]
- no_table_strings = ["no such table", "unknown table", "does not exist"]
# Utility functions
@@ -33,30 +32,25 @@ class SchemaTests(TransactionTestCase):
"Deletes all model tables for our models for a clean test environment"
cursor = connection.cursor()
connection.disable_constraint_checking()
+ table_names = connection.introspection.table_names(cursor)
for model in self.models:
# Remove any M2M tables first
for field in model._meta.local_many_to_many:
with atomic():
- try:
+ tbl = field.rel.through._meta.db_table
+ if tbl in table_names:
cursor.execute(connection.schema_editor().sql_delete_table % {
- "table": connection.ops.quote_name(field.rel.through._meta.db_table),
+ "table": connection.ops.quote_name(tbl),
})
- except DatabaseError as e:
- if any(s in str(e).lower() for s in self.no_table_strings):
- pass
- else:
- raise
+ table_names.remove(tbl)
# Then remove the main tables
with atomic():
- try:
+ tbl = model._meta.db_table
+ if tbl in table_names:
cursor.execute(connection.schema_editor().sql_delete_table % {
- "table": connection.ops.quote_name(model._meta.db_table),
+ "table": connection.ops.quote_name(tbl),
})
- except DatabaseError as e:
- if any(s in str(e).lower() for s in self.no_table_strings):
- pass
- else:
- raise
+ table_names.remove(tbl)
connection.enable_constraint_checking()
def column_classes(self, model):