[1.8.x] Refs #25745 -- Avoided multiple registration of the same model in schema tests.
Conflicts:
tests/schema/tests.py
Backport of 64240263f2
from master
This commit is contained in:
parent
da20004a61
commit
afe84c71eb
|
@ -58,6 +58,10 @@ class SchemaTests(TransactionTestCase):
|
||||||
model._meta._expire_cache()
|
model._meta._expire_cache()
|
||||||
if 'schema' in new_apps.all_models:
|
if 'schema' in new_apps.all_models:
|
||||||
for model in self.local_models:
|
for model in self.local_models:
|
||||||
|
for many_to_many in model._meta.many_to_many:
|
||||||
|
through = many_to_many.rel.through
|
||||||
|
if through and through._meta.auto_created:
|
||||||
|
del new_apps.all_models['schema'][through._meta.model_name]
|
||||||
del new_apps.all_models['schema'][model._meta.model_name]
|
del new_apps.all_models['schema'][model._meta.model_name]
|
||||||
|
|
||||||
def delete_tables(self):
|
def delete_tables(self):
|
||||||
|
@ -927,13 +931,12 @@ class SchemaTests(TransactionTestCase):
|
||||||
# Ensure there's no m2m table there
|
# Ensure there's no m2m table there
|
||||||
self.assertRaises(DatabaseError, self.column_classes, new_field.rel.through)
|
self.assertRaises(DatabaseError, self.column_classes, new_field.rel.through)
|
||||||
|
|
||||||
# Need to tear down using a model without the added M2M field that's
|
# Make sure the model state is coherent with the table one now that
|
||||||
# been removed.
|
# we've removed the tags field.
|
||||||
class LocalAuthorWithM2M(Model):
|
opts = LocalAuthorWithM2M._meta
|
||||||
class Meta:
|
opts.local_many_to_many.remove(new_field)
|
||||||
app_label = 'schema'
|
del new_apps.all_models['schema'][new_field.rel.through._meta.model_name]
|
||||||
apps = new_apps
|
opts._expire_cache()
|
||||||
self.local_models = [LocalAuthorWithM2M]
|
|
||||||
|
|
||||||
def test_m2m(self):
|
def test_m2m(self):
|
||||||
self._test_m2m(ManyToManyField)
|
self._test_m2m(ManyToManyField)
|
||||||
|
@ -1032,14 +1035,8 @@ class SchemaTests(TransactionTestCase):
|
||||||
self.assertRaises(DatabaseError, self.column_classes, LocalBookWithM2M._meta.get_field("tags").rel.through)
|
self.assertRaises(DatabaseError, self.column_classes, LocalBookWithM2M._meta.get_field("tags").rel.through)
|
||||||
|
|
||||||
# This model looks like the new model and is used for teardown.
|
# This model looks like the new model and is used for teardown.
|
||||||
class LocalBookWithM2M(Model):
|
opts = LocalBookWithM2M._meta
|
||||||
uniques = M2MFieldClass(UniqueTest)
|
opts.local_many_to_many.remove(old_field)
|
||||||
|
|
||||||
class Meta:
|
|
||||||
app_label = 'schema'
|
|
||||||
apps = new_apps
|
|
||||||
|
|
||||||
self.local_models = [LocalBookWithM2M]
|
|
||||||
# Ensure the new M2M exists and points to UniqueTest
|
# Ensure the new M2M exists and points to UniqueTest
|
||||||
constraints = self.get_constraints(new_field.rel.through._meta.db_table)
|
constraints = self.get_constraints(new_field.rel.through._meta.db_table)
|
||||||
if connection.features.supports_foreign_keys:
|
if connection.features.supports_foreign_keys:
|
||||||
|
|
Loading…
Reference in New Issue