summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/app_cache/tests.py51
-rw-r--r--tests/app_loading/tests.py26
-rw-r--r--tests/apps/__init__.py (renamed from tests/app_cache/__init__.py)0
-rw-r--r--tests/apps/models.py (renamed from tests/app_cache/models.py)8
-rw-r--r--tests/apps/tests.py51
-rw-r--r--tests/base/models.py2
-rw-r--r--tests/bash_completion/tests.py4
-rw-r--r--tests/commands_sql/tests.py14
-rw-r--r--tests/contenttypes_tests/tests.py4
-rw-r--r--tests/defer_regress/tests.py14
-rw-r--r--tests/invalid_models_tests/tests.py4
-rw-r--r--tests/managers_regress/tests.py26
-rw-r--r--tests/migrations/models.py6
-rw-r--r--tests/migrations/test_commands.py14
-rw-r--r--tests/migrations/test_loader.py2
-rw-r--r--tests/migrations/test_operations.py4
-rw-r--r--tests/migrations/test_state.py72
-rw-r--r--tests/no_models/tests.py4
-rw-r--r--tests/proxy_models/tests.py10
-rwxr-xr-xtests/runtests.py14
-rw-r--r--tests/schema/models.py28
-rw-r--r--tests/swappable_models/tests.py2
-rw-r--r--tests/tablespaces/tests.py10
-rw-r--r--tests/test_suite_override/tests.py4
-rw-r--r--tests/validation/test_unique.py4
25 files changed, 189 insertions, 189 deletions
diff --git a/tests/app_cache/tests.py b/tests/app_cache/tests.py
deleted file mode 100644
index 43133ab38f..0000000000
--- a/tests/app_cache/tests.py
+++ /dev/null
@@ -1,51 +0,0 @@
-from __future__ import absolute_import
-
-from django.apps import app_cache
-from django.apps.cache import AppCache
-from django.db import models
-from django.test import TestCase
-
-from .models import TotallyNormal, SoAlternative, new_app_cache
-
-
-class AppCacheTests(TestCase):
-
- def test_models_py(self):
- """
- Tests that the models in the models.py file were loaded correctly.
- """
- self.assertEqual(app_cache.get_model("app_cache", "TotallyNormal"), TotallyNormal)
- self.assertEqual(app_cache.get_model("app_cache", "SoAlternative"), None)
-
- self.assertEqual(new_app_cache.get_model("app_cache", "TotallyNormal"), None)
- self.assertEqual(new_app_cache.get_model("app_cache", "SoAlternative"), SoAlternative)
-
- def test_dynamic_load(self):
- """
- Makes a new model at runtime and ensures it goes into the right place.
- """
- old_models = app_cache.get_models(app_cache.get_app_config("app_cache").models_module)
- # Construct a new model in a new app cache
- body = {}
- new_app_cache = AppCache()
- meta_contents = {
- 'app_label': "app_cache",
- 'app_cache': new_app_cache,
- }
- meta = type("Meta", tuple(), meta_contents)
- body['Meta'] = meta
- body['__module__'] = TotallyNormal.__module__
- temp_model = type("SouthPonies", (models.Model,), body)
- # Make sure it appeared in the right place!
- self.assertEqual(
- old_models,
- app_cache.get_models(app_cache.get_app_config("app_cache").models_module),
- )
- self.assertEqual(new_app_cache.get_model("app_cache", "SouthPonies"), temp_model)
-
- def test_singleton_master(self):
- """
- Ensures that only one master app cache can exist.
- """
- with self.assertRaises(RuntimeError):
- AppCache(master=True)
diff --git a/tests/app_loading/tests.py b/tests/app_loading/tests.py
index 291877108f..19a1d03d74 100644
--- a/tests/app_loading/tests.py
+++ b/tests/app_loading/tests.py
@@ -3,7 +3,7 @@ from __future__ import unicode_literals
import os
import sys
-from django.apps import app_cache
+from django.apps import apps
from django.test import TestCase
from django.utils._os import upath
from django.utils import six
@@ -17,11 +17,11 @@ class EggLoadingTest(TestCase):
# The models need to be removed after the test in order to prevent bad
# interactions with the flush operation in other tests.
- self._old_models = app_cache.all_models['app_loading'].copy()
+ self._old_models = apps.all_models['app_loading'].copy()
def tearDown(self):
- app_cache.all_models['app_loading'] = self._old_models
- app_cache.get_models.cache_clear()
+ apps.all_models['app_loading'] = self._old_models
+ apps.get_models.cache_clear()
sys.path = self.old_path
@@ -30,7 +30,7 @@ class EggLoadingTest(TestCase):
egg_name = '%s/modelapp.egg' % self.egg_dir
sys.path.append(egg_name)
with self.settings(INSTALLED_APPS=['app_with_models']):
- models_module = app_cache.get_app_config('app_with_models').models_module
+ models_module = apps.get_app_config('app_with_models').models_module
self.assertIsNotNone(models_module)
def test_egg2(self):
@@ -38,7 +38,7 @@ class EggLoadingTest(TestCase):
egg_name = '%s/nomodelapp.egg' % self.egg_dir
sys.path.append(egg_name)
with self.settings(INSTALLED_APPS=['app_no_models']):
- models_module = app_cache.get_app_config('app_no_models').models_module
+ models_module = apps.get_app_config('app_no_models').models_module
self.assertIsNone(models_module)
def test_egg3(self):
@@ -46,7 +46,7 @@ class EggLoadingTest(TestCase):
egg_name = '%s/omelet.egg' % self.egg_dir
sys.path.append(egg_name)
with self.settings(INSTALLED_APPS=['omelet.app_with_models']):
- models_module = app_cache.get_app_config('app_with_models').models_module
+ models_module = apps.get_app_config('app_with_models').models_module
self.assertIsNotNone(models_module)
def test_egg4(self):
@@ -54,7 +54,7 @@ class EggLoadingTest(TestCase):
egg_name = '%s/omelet.egg' % self.egg_dir
sys.path.append(egg_name)
with self.settings(INSTALLED_APPS=['omelet.app_no_models']):
- models_module = app_cache.get_app_config('app_no_models').models_module
+ models_module = apps.get_app_config('app_no_models').models_module
self.assertIsNone(models_module)
def test_egg5(self):
@@ -73,26 +73,26 @@ class GetModelsTest(TestCase):
def test_get_model_only_returns_installed_models(self):
self.assertEqual(
- app_cache.get_model("not_installed", "NotInstalledModel"), None)
+ apps.get_model("not_installed", "NotInstalledModel"), None)
def test_get_model_with_not_installed(self):
self.assertEqual(
- app_cache.get_model(
+ apps.get_model(
"not_installed", "NotInstalledModel", only_installed=False),
self.not_installed_module.NotInstalledModel)
def test_get_models_only_returns_installed_models(self):
self.assertNotIn(
"NotInstalledModel",
- [m.__name__ for m in app_cache.get_models()])
+ [m.__name__ for m in apps.get_models()])
def test_get_models_with_app_label_only_returns_installed_models(self):
- self.assertEqual(app_cache.get_models(self.not_installed_module), [])
+ self.assertEqual(apps.get_models(self.not_installed_module), [])
def test_get_models_with_not_installed(self):
self.assertIn(
"NotInstalledModel",
- [m.__name__ for m in app_cache.get_models(only_installed=False)])
+ [m.__name__ for m in apps.get_models(only_installed=False)])
class NotInstalledModelsTest(TestCase):
diff --git a/tests/app_cache/__init__.py b/tests/apps/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/app_cache/__init__.py
+++ b/tests/apps/__init__.py
diff --git a/tests/app_cache/models.py b/tests/apps/models.py
index 9306830f9c..c3f764a70b 100644
--- a/tests/app_cache/models.py
+++ b/tests/apps/models.py
@@ -1,9 +1,9 @@
-from django.apps.cache import AppCache
+from django.apps.registry import Apps
from django.db import models
-# We're testing app cache presence on load, so this is handy.
+# We're testing app registry presence on load, so this is handy.
-new_app_cache = AppCache()
+new_apps = Apps()
class TotallyNormal(models.Model):
@@ -14,4 +14,4 @@ class SoAlternative(models.Model):
name = models.CharField(max_length=255)
class Meta:
- app_cache = new_app_cache
+ apps = new_apps
diff --git a/tests/apps/tests.py b/tests/apps/tests.py
new file mode 100644
index 0000000000..c38d16f8bb
--- /dev/null
+++ b/tests/apps/tests.py
@@ -0,0 +1,51 @@
+from __future__ import absolute_import
+
+from django.apps import apps
+from django.apps.registry import Apps
+from django.db import models
+from django.test import TestCase
+
+from .models import TotallyNormal, SoAlternative, new_apps
+
+
+class AppsTests(TestCase):
+
+ def test_models_py(self):
+ """
+ Tests that the models in the models.py file were loaded correctly.
+ """
+ self.assertEqual(apps.get_model("apps", "TotallyNormal"), TotallyNormal)
+ self.assertEqual(apps.get_model("apps", "SoAlternative"), None)
+
+ self.assertEqual(new_apps.get_model("apps", "TotallyNormal"), None)
+ self.assertEqual(new_apps.get_model("apps", "SoAlternative"), SoAlternative)
+
+ def test_dynamic_load(self):
+ """
+ Makes a new model at runtime and ensures it goes into the right place.
+ """
+ old_models = apps.get_models(apps.get_app_config("apps").models_module)
+ # Construct a new model in a new app registry
+ body = {}
+ new_apps = Apps()
+ meta_contents = {
+ 'app_label': "apps",
+ 'apps': new_apps,
+ }
+ meta = type("Meta", tuple(), meta_contents)
+ body['Meta'] = meta
+ body['__module__'] = TotallyNormal.__module__
+ temp_model = type("SouthPonies", (models.Model,), body)
+ # Make sure it appeared in the right place!
+ self.assertEqual(
+ old_models,
+ apps.get_models(apps.get_app_config("apps").models_module),
+ )
+ self.assertEqual(new_apps.get_model("apps", "SouthPonies"), temp_model)
+
+ def test_singleton_master(self):
+ """
+ Ensures that only one master registry can exist.
+ """
+ with self.assertRaises(RuntimeError):
+ Apps(master=True)
diff --git a/tests/base/models.py b/tests/base/models.py
index 23efdf9d5b..f84d64df53 100644
--- a/tests/base/models.py
+++ b/tests/base/models.py
@@ -5,7 +5,7 @@ from django.utils import six
# The models definitions below used to crash. Generating models dynamically
-# at runtime is a bad idea because it pollutes the app cache. This doesn't
+# at runtime is a bad idea because it pollutes the app registry. This doesn't
# integrate well with the test suite but at least it prevents regressions.
diff --git a/tests/bash_completion/tests.py b/tests/bash_completion/tests.py
index 5a6a6c48d2..8653af3c85 100644
--- a/tests/bash_completion/tests.py
+++ b/tests/bash_completion/tests.py
@@ -5,7 +5,7 @@ import os
import sys
import unittest
-from django.apps import app_cache
+from django.apps import apps
from django.core.management import ManagementUtility
from django.utils.six import StringIO
@@ -85,6 +85,6 @@ class BashCompletionTests(unittest.TestCase):
self._user_input('django-admin.py sqlall a')
output = self._run_autocomplete()
a_labels = sorted(app_config.label
- for app_config in app_cache.get_app_configs()
+ for app_config in apps.get_app_configs()
if app_config.label.startswith('a'))
self.assertEqual(output, a_labels)
diff --git a/tests/commands_sql/tests.py b/tests/commands_sql/tests.py
index 1c2a7f0ffa..00f4017b9c 100644
--- a/tests/commands_sql/tests.py
+++ b/tests/commands_sql/tests.py
@@ -1,6 +1,6 @@
from __future__ import unicode_literals
-from django.apps import app_cache
+from django.apps import apps
from django.core.management.color import no_style
from django.core.management.sql import (sql_create, sql_delete, sql_indexes,
sql_destroy_indexes, sql_all)
@@ -17,7 +17,7 @@ class SQLCommandsTestCase(TestCase):
return len([o for o in output if o.startswith(cmd)])
def test_sql_create(self):
- app = app_cache.get_app_config('commands_sql').models_module
+ app = apps.get_app_config('commands_sql').models_module
output = sql_create(app, no_style(), connections[DEFAULT_DB_ALIAS])
create_tables = [o for o in output if o.startswith('CREATE TABLE')]
self.assertEqual(len(create_tables), 3)
@@ -26,7 +26,7 @@ class SQLCommandsTestCase(TestCase):
six.assertRegex(self, sql, r'^create table .commands_sql_book.*')
def test_sql_delete(self):
- app = app_cache.get_app_config('commands_sql').models_module
+ app = apps.get_app_config('commands_sql').models_module
output = sql_delete(app, no_style(), connections[DEFAULT_DB_ALIAS])
drop_tables = [o for o in output if o.startswith('DROP TABLE')]
self.assertEqual(len(drop_tables), 3)
@@ -35,19 +35,19 @@ class SQLCommandsTestCase(TestCase):
six.assertRegex(self, sql, r'^drop table .commands_sql_comment.*')
def test_sql_indexes(self):
- app = app_cache.get_app_config('commands_sql').models_module
+ app = apps.get_app_config('commands_sql').models_module
output = sql_indexes(app, no_style(), connections[DEFAULT_DB_ALIAS])
# PostgreSQL creates one additional index for CharField
self.assertIn(self.count_ddl(output, 'CREATE INDEX'), [3, 4])
def test_sql_destroy_indexes(self):
- app = app_cache.get_app_config('commands_sql').models_module
+ app = apps.get_app_config('commands_sql').models_module
output = sql_destroy_indexes(app, no_style(), connections[DEFAULT_DB_ALIAS])
# PostgreSQL creates one additional index for CharField
self.assertIn(self.count_ddl(output, 'DROP INDEX'), [3, 4])
def test_sql_all(self):
- app = app_cache.get_app_config('commands_sql').models_module
+ app = apps.get_app_config('commands_sql').models_module
output = sql_all(app, no_style(), connections[DEFAULT_DB_ALIAS])
self.assertEqual(self.count_ddl(output, 'CREATE TABLE'), 3)
@@ -69,7 +69,7 @@ class SQLCommandsRouterTestCase(TestCase):
router.routers = self._old_routers
def test_router_honored(self):
- app = app_cache.get_app_config('commands_sql').models_module
+ app = apps.get_app_config('commands_sql').models_module
for sql_command in (sql_all, sql_create, sql_delete, sql_indexes, sql_destroy_indexes):
output = sql_command(app, no_style(), connections[DEFAULT_DB_ALIAS])
self.assertEqual(len(output), 0,
diff --git a/tests/contenttypes_tests/tests.py b/tests/contenttypes_tests/tests.py
index d3c19fd910..1f0af709cb 100644
--- a/tests/contenttypes_tests/tests.py
+++ b/tests/contenttypes_tests/tests.py
@@ -1,6 +1,6 @@
from __future__ import unicode_literals
-from django.apps.cache import AppCache
+from django.apps.registry import Apps
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.test import TestCase
@@ -61,7 +61,7 @@ class ContentTypesViewsTests(TestCase):
class Meta:
verbose_name = 'a model created on the fly'
app_label = 'my_great_app'
- app_cache = AppCache()
+ apps = Apps()
ct = ContentType.objects.get_for_model(ModelCreatedOnTheFly)
self.assertEqual(ct.app_label, 'my_great_app')
diff --git a/tests/defer_regress/tests.py b/tests/defer_regress/tests.py
index b12b3b61b0..22c2d281da 100644
--- a/tests/defer_regress/tests.py
+++ b/tests/defer_regress/tests.py
@@ -2,7 +2,7 @@ from __future__ import unicode_literals
from operator import attrgetter
-from django.apps import app_cache
+from django.apps import apps
from django.contrib.contenttypes.models import ContentType
from django.contrib.sessions.backends.db import SessionStore
from django.db.models import Count
@@ -102,7 +102,7 @@ class DeferRegressionTest(TestCase):
klasses = set(
map(
attrgetter("__name__"),
- app_cache.get_models(app_cache.get_app_config("defer_regress").models_module)
+ apps.get_models(apps.get_app_config("defer_regress").models_module)
)
)
self.assertIn("Child", klasses)
@@ -110,13 +110,13 @@ class DeferRegressionTest(TestCase):
self.assertNotIn("Child_Deferred_value", klasses)
self.assertNotIn("Item_Deferred_name", klasses)
self.assertFalse(any(
- k._deferred for k in app_cache.get_models(app_cache.get_app_config("defer_regress").models_module)))
+ k._deferred for k in apps.get_models(apps.get_app_config("defer_regress").models_module)))
klasses_with_deferred = set(
map(
attrgetter("__name__"),
- app_cache.get_models(
- app_cache.get_app_config("defer_regress").models_module, include_deferred=True
+ apps.get_models(
+ apps.get_app_config("defer_regress").models_module, include_deferred=True
),
)
)
@@ -125,8 +125,8 @@ class DeferRegressionTest(TestCase):
self.assertIn("Child_Deferred_value", klasses_with_deferred)
self.assertIn("Item_Deferred_name", klasses_with_deferred)
self.assertTrue(any(
- k._deferred for k in app_cache.get_models(
- app_cache.get_app_config("defer_regress").models_module, include_deferred=True))
+ k._deferred for k in apps.get_models(
+ apps.get_app_config("defer_regress").models_module, include_deferred=True))
)
@override_settings(SESSION_SERIALIZER='django.contrib.sessions.serializers.PickleSerializer')
diff --git a/tests/invalid_models_tests/tests.py b/tests/invalid_models_tests/tests.py
index 852e1dbb0d..2c98f39807 100644
--- a/tests/invalid_models_tests/tests.py
+++ b/tests/invalid_models_tests/tests.py
@@ -1,7 +1,7 @@
import sys
import unittest
-from django.apps import app_cache
+from django.apps import apps
from django.core.management.validation import get_validation_errors
from django.test import override_settings
from django.utils.six import StringIO
@@ -32,7 +32,7 @@ class InvalidModelTestCase(unittest.TestCase):
TEST_SWAPPED_MODEL_BAD_MODEL='not_an_app.Target',
)
def test_invalid_models(self):
- module = app_cache.get_app_config("invalid_models").models_module
+ module = apps.get_app_config("invalid_models").models_module
get_validation_errors(self.stdout, module)
self.stdout.seek(0)
diff --git a/tests/managers_regress/tests.py b/tests/managers_regress/tests.py
index bf8e5b17d4..8e0b4cd017 100644
--- a/tests/managers_regress/tests.py
+++ b/tests/managers_regress/tests.py
@@ -1,6 +1,6 @@
from __future__ import unicode_literals
-from django.apps import app_cache
+from django.apps import apps
from django.db import models
from django.template import Context, Template
from django.test import TestCase, override_settings
@@ -110,7 +110,7 @@ class ManagersRegressionTests(TestCase):
def test_swappable_manager(self):
# The models need to be removed after the test in order to prevent bad
# interactions with the flush operation in other tests.
- _old_models = app_cache.app_configs['managers_regress'].models.copy()
+ _old_models = apps.app_configs['managers_regress'].models.copy()
try:
class SwappableModel(models.Model):
@@ -126,15 +126,15 @@ class ManagersRegressionTests(TestCase):
self.assertEqual(str(e), "Manager isn't available; SwappableModel has been swapped for 'managers_regress.Parent'")
finally:
- app_cache.app_configs['managers_regress'].models = _old_models
- app_cache.all_models['managers_regress'] = _old_models
- app_cache.get_models.cache_clear()
+ apps.app_configs['managers_regress'].models = _old_models
+ apps.all_models['managers_regress'] = _old_models
+ apps.get_models.cache_clear()
@override_settings(TEST_SWAPPABLE_MODEL='managers_regress.Parent')
def test_custom_swappable_manager(self):
# The models need to be removed after the test in order to prevent bad
# interactions with the flush operation in other tests.
- _old_models = app_cache.app_configs['managers_regress'].models.copy()
+ _old_models = apps.app_configs['managers_regress'].models.copy()
try:
class SwappableModel(models.Model):
@@ -154,15 +154,15 @@ class ManagersRegressionTests(TestCase):
self.assertEqual(str(e), "Manager isn't available; SwappableModel has been swapped for 'managers_regress.Parent'")
finally:
- app_cache.app_configs['managers_regress'].models = _old_models
- app_cache.all_models['managers_regress'] = _old_models
- app_cache.get_models.cache_clear()
+ apps.app_configs['managers_regress'].models = _old_models
+ apps.all_models['managers_regress'] = _old_models
+ apps.get_models.cache_clear()
@override_settings(TEST_SWAPPABLE_MODEL='managers_regress.Parent')
def test_explicit_swappable_manager(self):
# The models need to be removed after the test in order to prevent bad
# interactions with the flush operation in other tests.
- _old_models = app_cache.app_configs['managers_regress'].models.copy()
+ _old_models = apps.app_configs['managers_regress'].models.copy()
try:
class SwappableModel(models.Model):
@@ -182,9 +182,9 @@ class ManagersRegressionTests(TestCase):
self.assertEqual(str(e), "Manager isn't available; SwappableModel has been swapped for 'managers_regress.Parent'")
finally:
- app_cache.app_configs['managers_regress'].models = _old_models
- app_cache.all_models['managers_regress'] = _old_models
- app_cache.get_models.cache_clear()
+ apps.app_configs['managers_regress'].models = _old_models
+ apps.all_models['managers_regress'] = _old_models
+ apps.get_models.cache_clear()
def test_regress_3871(self):
related = RelatedModel.objects.create()
diff --git a/tests/migrations/models.py b/tests/migrations/models.py
index b1ef6c1dd1..f76a84054f 100644
--- a/tests/migrations/models.py
+++ b/tests/migrations/models.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-from django.apps.cache import AppCache
+from django.apps.registry import Apps
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
@@ -12,7 +12,7 @@ class UnicodeModel(models.Model):
class Meta:
# Disable auto loading of this model as we load it on our own
- app_cache = AppCache()
+ apps = Apps()
verbose_name = 'úñí©óðé µóðéø'
verbose_name_plural = 'úñí©óðé µóðéøß'
@@ -32,4 +32,4 @@ class UnserializableModel(models.Model):
class Meta:
# Disable auto loading of this model as we load it on our own
- app_cache = AppCache()
+ apps = Apps()
diff --git a/tests/migrations/test_commands.py b/tests/migrations/test_commands.py
index 9fa9be6cbf..3219a62f5a 100644
--- a/tests/migrations/test_commands.py
+++ b/tests/migrations/test_commands.py
@@ -5,7 +5,7 @@ import codecs
import os
import shutil
-from django.apps import app_cache
+from django.apps import apps
from django.core.management import call_command, CommandError
from django.test import override_settings
from django.utils import six
@@ -131,12 +131,12 @@ class MakeMigrationsTests(MigrationTestBase):
self.test_dir = os.path.abspath(os.path.dirname(upath(__file__)))
self.migration_dir = os.path.join(self.test_dir, 'migrations_%d' % self.creation_counter)
self.migration_pkg = "migrations.migrations_%d" % self.creation_counter
- self._old_models = app_cache.app_configs['migrations'].models.copy()
+ self._old_models = apps.app_configs['migrations'].models.copy()
def tearDown(self):
- app_cache.app_configs['migrations'].models = self._old_models
- app_cache.all_models['migrations'] = self._old_models
- app_cache.get_models.cache_clear()
+ apps.app_configs['migrations'].models = self._old_models
+ apps.all_models['migrations'] = self._old_models
+ apps.get_models.cache_clear()
os.chdir(self.test_dir)
try:
@@ -152,7 +152,7 @@ class MakeMigrationsTests(MigrationTestBase):
def test_files_content(self):
self.assertTableNotExists("migrations_unicodemodel")
- app_cache.register_model('migrations', UnicodeModel)
+ apps.register_model('migrations', UnicodeModel)
with override_settings(MIGRATION_MODULES={"migrations": self.migration_pkg}):
call_command("makemigrations", "migrations", verbosity=0)
@@ -188,7 +188,7 @@ class MakeMigrationsTests(MigrationTestBase):
def test_failing_migration(self):
#21280 - If a migration fails to serialize, it shouldn't generate an empty file.
- app_cache.register_model('migrations', UnserializableModel)
+ apps.register_model('migrations', UnserializableModel)
with six.assertRaisesRegex(self, ValueError, r'Cannot serialize'):
with override_settings(MIGRATION_MODULES={"migrations": self.migration_pkg}):
diff --git a/tests/migrations/test_loader.py b/tests/migrations/test_loader.py
index 4f0b463f99..7b9ce72aab 100644
--- a/tests/migrations/test_loader.py
+++ b/tests/migrations/test_loader.py
@@ -43,7 +43,7 @@ class LoaderTests(TestCase):
def test_load(self):
"""
Makes sure the loader can load the migrations for the test apps,
- and then render them out to a new AppCache.
+ and then render them out to a new Apps.
"""
# Load and test the plan
migration_loader = MigrationLoader(connection)
diff --git a/tests/migrations/test_operations.py b/tests/migrations/test_operations.py
index 0ce030a66c..d11fda23c8 100644
--- a/tests/migrations/test_operations.py
+++ b/tests/migrations/test_operations.py
@@ -203,8 +203,8 @@ class OperationTests(MigrationTestBase):
self.assertColumnNotExists("test_adflmm_pony", "stables")
# Make sure the M2M field actually works
with atomic():
- new_app_cache = new_state.render()
- Pony = new_app_cache.get_model("test_adflmm", "Pony")
+ new_apps = new_state.render()
+ Pony = new_apps.get_model("test_adflmm", "Pony")
p = Pony.objects.create(pink=False, weight=4.55)
p.stables.create()
self.assertEqual(p.stables.count(), 1)
diff --git a/tests/migrations/test_state.py b/tests/migrations/test_state.py
index e695248cd2..b7af48fede 100644
--- a/tests/migrations/test_state.py
+++ b/tests/migrations/test_state.py
@@ -1,4 +1,4 @@
-from django.apps.cache import AppCache
+from django.apps.registry import Apps
from django.db import models
from django.db.migrations.state import ProjectState, ModelState, InvalidBasesError
from django.test import TestCase
@@ -11,10 +11,10 @@ class StateTests(TestCase):
def test_create(self):
"""
- Tests making a ProjectState from an AppCache
+ Tests making a ProjectState from an Apps
"""
- new_app_cache = AppCache()
+ new_apps = Apps()
class Author(models.Model):
name = models.CharField(max_length=255)
@@ -23,13 +23,13 @@ class StateTests(TestCase):
class Meta:
app_label = "migrations"
- app_cache = new_app_cache
+ apps = new_apps
unique_together = ["name", "bio"]
class AuthorProxy(Author):
class Meta:
app_label = "migrations"
- app_cache = new_app_cache
+ apps = new_apps
proxy = True
ordering = ["name"]
@@ -40,11 +40,11 @@ class StateTests(TestCase):
class Meta:
app_label = "migrations"
- app_cache = new_app_cache
+ apps = new_apps
verbose_name = "tome"
db_table = "test_tome"
- project_state = ProjectState.from_app_cache(new_app_cache)
+ project_state = ProjectState.from_apps(new_apps)
author_state = project_state.models['migrations', 'author']
author_proxy_state = project_state.models['migrations', 'authorproxy']
book_state = project_state.models['migrations', 'book']
@@ -75,7 +75,7 @@ class StateTests(TestCase):
def test_render(self):
"""
- Tests rendering a ProjectState into an AppCache.
+ Tests rendering a ProjectState into an Apps.
"""
project_state = ProjectState()
project_state.add_model_state(ModelState(
@@ -90,9 +90,9 @@ class StateTests(TestCase):
None,
))
- new_app_cache = project_state.render()
- self.assertEqual(new_app_cache.get_model("migrations", "Tag")._meta.get_field_by_name("name")[0].max_length, 100)
- self.assertEqual(new_app_cache.get_model("migrations", "Tag")._meta.get_field_by_name("hidden")[0].null, False)
+ new_apps = project_state.render()
+ self.assertEqual(new_apps.get_model("migrations", "Tag")._meta.get_field_by_name("name")[0].max_length, 100)
+ self.assertEqual(new_apps.get_model("migrations", "Tag")._meta.get_field_by_name("hidden")[0].null, False)
def test_render_model_inheritance(self):
class Book(models.Model):
@@ -100,90 +100,90 @@ class StateTests(TestCase):
class Meta:
app_label = "migrations"
- app_cache = AppCache()
+ apps = Apps()
class Novel(Book):
class Meta:
app_label = "migrations"
- app_cache = AppCache()
+ apps = Apps()
# First, test rendering individually
- app_cache = AppCache()
+ apps = Apps()
# We shouldn't be able to render yet
ms = ModelState.from_model(Novel)
with self.assertRaises(InvalidBasesError):
- ms.render(app_cache)
+ ms.render(apps)
- # Once the parent model is in the app cache, it should be fine
- ModelState.from_model(Book).render(app_cache)
- ModelState.from_model(Novel).render(app_cache)
+ # Once the parent model is in the app registry, it should be fine
+ ModelState.from_model(Book).render(apps)
+ ModelState.from_model(Novel).render(apps)
def test_render_model_with_multiple_inheritance(self):
class Foo(models.Model):
class Meta:
app_label = "migrations"
- app_cache = AppCache()
+ apps = Apps()
class Bar(models.Model):
class Meta:
app_label = "migrations"
- app_cache = AppCache()
+ apps = Apps()
class FooBar(Foo, Bar):
class Meta:
app_label = "migrations"
- app_cache = AppCache()
+ apps = Apps()
- app_cache = AppCache()
+ apps = Apps()
# We shouldn't be able to render yet
ms = ModelState.from_model(FooBar)
with self.assertRaises(InvalidBasesError):
- ms.render(app_cache)
+ ms.render(apps)
- # Once the parent models are in the app cache, it should be fine
- ModelState.from_model(Foo).render(app_cache)
- ModelState.from_model(Bar).render(app_cache)
- ModelState.from_model(FooBar).render(app_cache)
+ # Once the parent models are in the app registry, it should be fine
+ ModelState.from_model(Foo).render(apps)
+ ModelState.from_model(Bar).render(apps)
+ ModelState.from_model(FooBar).render(apps)
def test_render_project_dependencies(self):
"""
Tests that the ProjectState render method correctly renders models
to account for inter-model base dependencies.
"""
- new_app_cache = AppCache()
+ new_apps = Apps()
class A(models.Model):
class Meta:
app_label = "migrations"
- app_cache = new_app_cache
+ apps = new_apps
class B(A):
class Meta:
app_label = "migrations"
- app_cache = new_app_cache
+ apps = new_apps
class C(B):
class Meta:
app_label = "migrations"
- app_cache = new_app_cache
+ apps = new_apps
class D(A):
class Meta:
app_label = "migrations"
- app_cache = new_app_cache
+ apps = new_apps
class E(B):
class Meta:
app_label = "migrations"
- app_cache = new_app_cache
+ apps = new_apps
proxy = True
class F(D):
class Meta:
app_label = "migrations"
- app_cache = new_app_cache
+ apps = new_apps
proxy = True
# Make a ProjectState and render it
@@ -194,8 +194,8 @@ class StateTests(TestCase):
project_state.add_model_state(ModelState.from_model(D))
project_state.add_model_state(ModelState.from_model(E))
project_state.add_model_state(ModelState.from_model(F))
- final_app_cache = project_state.render()
- self.assertEqual(len(final_app_cache.get_models()), 6)
+ final_apps = project_state.render()
+ self.assertEqual(len(final_apps.get_models()), 6)
# Now make an invalid ProjectState and make sure it fails
project_state = ProjectState()
diff --git a/tests/no_models/tests.py b/tests/no_models/tests.py
index f9ff80485e..bd17364071 100644
--- a/tests/no_models/tests.py
+++ b/tests/no_models/tests.py
@@ -1,4 +1,4 @@
-from django.apps import app_cache
+from django.apps import apps
from django.test import TestCase
@@ -6,5 +6,5 @@ class NoModelTests(TestCase):
def test_no_models(self):
"""Test that it's possible to load an app with no models.py file."""
- app_config = app_cache.get_app_config('no_models')
+ app_config = apps.get_app_config('no_models')
self.assertIsNone(app_config.models_module)
diff --git a/tests/proxy_models/tests.py b/tests/proxy_models/tests.py
index 4a3d6e5e5a..fe294aeb1e 100644
--- a/tests/proxy_models/tests.py
+++ b/tests/proxy_models/tests.py
@@ -1,6 +1,6 @@
from __future__ import unicode_literals
-from django.apps import app_cache
+from django.apps import apps
from django.contrib import admin
from django.contrib.contenttypes.models import ContentType
from django.core import management
@@ -155,7 +155,7 @@ class ProxyModelTests(TestCase):
def test_swappable(self):
# The models need to be removed after the test in order to prevent bad
# interactions with the flush operation in other tests.
- _old_models = app_cache.app_configs['proxy_models'].models.copy()
+ _old_models = apps.app_configs['proxy_models'].models.copy()
try:
class SwappableModel(models.Model):
@@ -173,9 +173,9 @@ class ProxyModelTests(TestCase):
class Meta:
proxy = True
finally:
- app_cache.app_configs['proxy_models'].models = _old_models
- app_cache.all_models['proxy_models'] = _old_models
- app_cache.get_models.cache_clear()
+ apps.app_configs['proxy_models'].models = _old_models
+ apps.all_models['proxy_models'] = _old_models
+ apps.get_models.cache_clear()
def test_myperson_manager(self):
Person.objects.create(name="fred")
diff --git a/tests/runtests.py b/tests/runtests.py
index ab6f778a81..5f39eef400 100755
--- a/tests/runtests.py
+++ b/tests/runtests.py
@@ -80,13 +80,13 @@ def get_test_modules():
def get_installed():
- from django.apps import app_cache
- return [app_config.name for app_config in app_cache.get_app_configs()]
+ from django.apps import apps
+ return [app_config.name for app_config in apps.get_app_configs()]
def setup(verbosity, test_labels):
import django
- from django.apps import app_cache, AppConfig
+ from django.apps import apps, AppConfig
from django.conf import settings
from django.test import TransactionTestCase, TestCase
@@ -128,7 +128,7 @@ def setup(verbosity, test_labels):
# Load all the ALWAYS_INSTALLED_APPS.
with warnings.catch_warnings():
warnings.filterwarnings('ignore', 'django.contrib.comments is deprecated and will be removed before Django 1.8.', DeprecationWarning)
- app_cache.populate_models()
+ apps.populate_models()
# Load all the test model apps.
test_modules = get_test_modules()
@@ -168,9 +168,9 @@ def setup(verbosity, test_labels):
if module_label not in settings.INSTALLED_APPS:
settings.INSTALLED_APPS.append(module_label)
app_config = AppConfig.create(module_label)
- app_config.import_models(app_cache.all_models[app_config.label])
- app_cache.app_configs[app_config.label] = app_config
- app_cache.get_models.cache_clear()
+ app_config.import_models(apps.all_models[app_config.label])
+ apps.app_configs[app_config.label] = app_config
+ apps.get_models.cache_clear()
return state
diff --git a/tests/schema/models.py b/tests/schema/models.py
index b294647f9b..44fecf7ebd 100644
--- a/tests/schema/models.py
+++ b/tests/schema/models.py
@@ -1,11 +1,11 @@
-from django.apps.cache import AppCache
+from django.apps.registry import Apps
from django.db import models
# Because we want to test creation and deletion of these as separate things,
-# these models are all inserted into a separate AppCache so the main test
+# these models are all inserted into a separate Apps so the main test
# runner doesn't migrate them.
-new_app_cache = AppCache()
+new_apps = Apps()
class Author(models.Model):
@@ -13,14 +13,14 @@ class Author(models.Model):
height = models.PositiveIntegerField(null=True, blank=True)
class Meta:
- app_cache = new_app_cache
+ apps = new_apps
class AuthorWithM2M(models.Model):
name = models.CharField(max_length=255)
class Meta:
- app_cache = new_app_cache
+ apps = new_apps
class Book(models.Model):
@@ -30,7 +30,7 @@ class Book(models.Model):
# tags = models.ManyToManyField("Tag", related_name="books")
class Meta:
- app_cache = new_app_cache
+ apps = new_apps
class BookWithM2M(models.Model):
@@ -40,7 +40,7 @@ class BookWithM2M(models.Model):
tags = models.ManyToManyField("TagM2MTest", related_name="books")
class Meta:
- app_cache = new_app_cache
+ apps = new_apps
class BookWithSlug(models.Model):
@@ -50,7 +50,7 @@ class BookWithSlug(models.Model):
slug = models.CharField(max_length=20, unique=True)
class Meta:
- app_cache = new_app_cache
+ apps = new_apps
db_table = "schema_book"
@@ -59,7 +59,7 @@ class Tag(models.Model):
slug = models.SlugField(unique=True)
class Meta:
- app_cache = new_app_cache
+ apps = new_apps
class TagM2MTest(models.Model):
@@ -67,7 +67,7 @@ class TagM2MTest(models.Model):
slug = models.SlugField(unique=True)
class Meta:
- app_cache = new_app_cache
+ apps = new_apps
class TagIndexed(models.Model):
@@ -75,7 +75,7 @@ class TagIndexed(models.Model):
slug = models.SlugField(unique=True)
class Meta:
- app_cache = new_app_cache
+ apps = new_apps
index_together = [["slug", "title"]]
@@ -84,7 +84,7 @@ class TagUniqueRename(models.Model):
slug2 = models.SlugField(unique=True)
class Meta:
- app_cache = new_app_cache
+ apps = new_apps
db_table = "schema_tag"
@@ -93,7 +93,7 @@ class UniqueTest(models.Model):
slug = models.SlugField(unique=False)
class Meta:
- app_cache = new_app_cache
+ apps = new_apps
unique_together = ["year", "slug"]
@@ -101,4 +101,4 @@ class BookWithLongName(models.Model):
author_foreign_key_with_really_long_field_name = models.ForeignKey(Author)
class Meta:
- app_cache = new_app_cache
+ apps = new_apps
diff --git a/tests/swappable_models/tests.py b/tests/swappable_models/tests.py
index c703a99fcb..3bf5b46d66 100644
--- a/tests/swappable_models/tests.py
+++ b/tests/swappable_models/tests.py
@@ -2,7 +2,7 @@ from __future__ import unicode_literals
from django.utils.six import StringIO
-from django.apps import app_cache
+from django.apps import apps
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
from django.core import management
diff --git a/tests/tablespaces/tests.py b/tests/tablespaces/tests.py
index fdee877a9f..5e22608551 100644
--- a/tests/tablespaces/tests.py
+++ b/tests/tablespaces/tests.py
@@ -1,6 +1,6 @@
from __future__ import unicode_literals
-from django.apps import app_cache
+from django.apps import apps
from django.conf import settings
from django.db import connection
from django.core.management.color import no_style
@@ -26,7 +26,7 @@ class TablespacesTests(TestCase):
def setUp(self):
# The unmanaged models need to be removed after the test in order to
# prevent bad interactions with the flush operation in other tests.
- self._old_models = app_cache.app_configs['tablespaces'].models.copy()
+ self._old_models = apps.app_configs['tablespaces'].models.copy()
for model in Article, Authors, Reviewers, Scientist:
model._meta.managed = True
@@ -35,9 +35,9 @@ class TablespacesTests(TestCase):
for model in Article, Authors, Reviewers, Scientist:
model._meta.managed = False
- app_cache.app_configs['tablespaces'].models = self._old_models
- app_cache.all_models['tablespaces'] = self._old_models
- app_cache.get_models.cache_clear()
+ apps.app_configs['tablespaces'].models = self._old_models
+ apps.all_models['tablespaces'] = self._old_models
+ apps.get_models.cache_clear()
def assertNumContains(self, haystack, needle, count):
real_count = haystack.count(needle)
diff --git a/tests/test_suite_override/tests.py b/tests/test_suite_override/tests.py
index 9666df1c19..c485b801bc 100644
--- a/tests/test_suite_override/tests.py
+++ b/tests/test_suite_override/tests.py
@@ -1,6 +1,6 @@
import unittest
-from django.apps import app_cache
+from django.apps import apps
from django.test.utils import IgnoreAllDeprecationWarningsMixin
@@ -20,7 +20,7 @@ class SuiteOverrideTest(IgnoreAllDeprecationWarningsMixin, unittest.TestCase):
"""
from django.test.simple import build_suite
- app_config = app_cache.get_app_config("test_suite_override")
+ app_config = apps.get_app_config("test_suite_override")
suite = build_suite(app_config)
self.assertEqual(suite.countTestCases(), 1)
diff --git a/tests/validation/test_unique.py b/tests/validation/test_unique.py
index be7808f460..76c7ec174f 100644
--- a/tests/validation/test_unique.py
+++ b/tests/validation/test_unique.py
@@ -3,7 +3,7 @@ from __future__ import unicode_literals
import datetime
import unittest
-from django.apps.cache import AppCache
+from django.apps.registry import Apps
from django.core.exceptions import ValidationError
from django.db import models
from django.test import TestCase
@@ -58,7 +58,7 @@ class GetUniqueCheckTests(unittest.TestCase):
Meta = type(str('Meta'), (), {
'unique_together': unique_together,
- 'app_cache': AppCache()
+ 'apps': Apps()
})
checks, _ = M()._get_unique_checks()