[1.7.x] Fixed table cleanup in GIS migration tests

Backport of ab90c4707b from master.
This commit is contained in:
Claude Paroz 2014-04-21 23:08:00 +02:00
parent 417e9f383f
commit 1d0f1ee199
2 changed files with 17 additions and 14 deletions

View File

@ -6,6 +6,7 @@ from django.contrib.gis.tests.utils import HAS_SPATIAL_DB
from django.db import connection, migrations, models from django.db import connection, migrations, models
from django.db.migrations.migration import Migration from django.db.migrations.migration import Migration
from django.db.migrations.state import ProjectState from django.db.migrations.state import ProjectState
from django.db.utils import DatabaseError
from django.test import TransactionTestCase from django.test import TransactionTestCase
if HAS_SPATIAL_DB: if HAS_SPATIAL_DB:
@ -21,6 +22,19 @@ if HAS_SPATIAL_DB:
class OperationTests(TransactionTestCase): class OperationTests(TransactionTestCase):
available_apps = ["django.contrib.gis.tests.gis_migrations"] available_apps = ["django.contrib.gis.tests.gis_migrations"]
def tearDown(self):
# Delete table after testing
with connection.cursor() as cursor:
try:
cursor.execute("DROP TABLE %s" % connection.ops.quote_name("gis_neighborhood"))
except DatabaseError:
pass
else:
if HAS_GEOMETRY_COLUMNS:
cursor.execute("DELETE FROM geometry_columns WHERE %s = %%s" % (
GeometryColumns.table_name_col(),), ["gis_neighborhood"])
super(OperationTests, self).tearDown()
def get_table_description(self, table): def get_table_description(self, table):
with connection.cursor() as cursor: with connection.cursor() as cursor:
return connection.introspection.get_table_description(cursor, table) return connection.introspection.get_table_description(cursor, table)
@ -38,17 +52,6 @@ class OperationTests(TransactionTestCase):
return migration.apply(project_state, editor) return migration.apply(project_state, editor)
def set_up_test_model(self): def set_up_test_model(self):
# Delete the tables if they already exist
with connection.cursor() as cursor:
try:
cursor.execute("DROP TABLE %s" % connection.ops.quote_name("gis_neighborhood"))
except:
pass
else:
if HAS_GEOMETRY_COLUMNS:
cursor.execute("DELETE FROM geometry_columns WHERE %s = %%s" % (
GeometryColumns.table_name_col(),), ["gis_neighborhood"])
operations = [migrations.CreateModel( operations = [migrations.CreateModel(
"Neighborhood", "Neighborhood",
[ [

View File

@ -5,7 +5,7 @@ from django.db.migrations.migration import Migration
from django.db.migrations.state import ProjectState from django.db.migrations.state import ProjectState
from django.db.models.fields import NOT_PROVIDED from django.db.models.fields import NOT_PROVIDED
from django.db.transaction import atomic from django.db.transaction import atomic
from django.db.utils import IntegrityError from django.db.utils import IntegrityError, DatabaseError
from .test_base import MigrationTestBase from .test_base import MigrationTestBase
@ -37,11 +37,11 @@ class OperationTests(MigrationTestBase):
with connection.cursor() as cursor: with connection.cursor() as cursor:
try: try:
cursor.execute("DROP TABLE %s_pony" % app_label) cursor.execute("DROP TABLE %s_pony" % app_label)
except: except DatabaseError:
pass pass
try: try:
cursor.execute("DROP TABLE %s_stable" % app_label) cursor.execute("DROP TABLE %s_stable" % app_label)
except: except DatabaseError:
pass pass
# Make the "current" state # Make the "current" state
operations = [migrations.CreateModel( operations = [migrations.CreateModel(