|
@@ -0,0 +1,165 @@
|
|
|
+import sys
|
|
|
+from types import ModuleType
|
|
|
+
|
|
|
+from django.conf import (
|
|
|
+ DEFAULT_FILE_STORAGE_DEPRECATED_MSG,
|
|
|
+ DEFAULT_STORAGE_ALIAS,
|
|
|
+ STATICFILES_STORAGE_ALIAS,
|
|
|
+ STATICFILES_STORAGE_DEPRECATED_MSG,
|
|
|
+ Settings,
|
|
|
+ settings,
|
|
|
+)
|
|
|
+from django.contrib.staticfiles.storage import (
|
|
|
+ ManifestStaticFilesStorage,
|
|
|
+ staticfiles_storage,
|
|
|
+)
|
|
|
+from django.core.exceptions import ImproperlyConfigured
|
|
|
+from django.core.files.storage import Storage, StorageHandler, default_storage, storages
|
|
|
+from django.test import TestCase, ignore_warnings
|
|
|
+from django.utils.deprecation import RemovedInDjango51Warning
|
|
|
+
|
|
|
+
|
|
|
+class StaticfilesStorageDeprecationTests(TestCase):
|
|
|
+ msg = STATICFILES_STORAGE_DEPRECATED_MSG
|
|
|
+
|
|
|
+ def test_override_settings_warning(self):
|
|
|
+ with self.assertRaisesMessage(RemovedInDjango51Warning, self.msg):
|
|
|
+ with self.settings(
|
|
|
+ STATICFILES_STORAGE=(
|
|
|
+ "django.contrib.staticfiles.storage.ManifestStaticFilesStorage"
|
|
|
+ )
|
|
|
+ ):
|
|
|
+ pass
|
|
|
+
|
|
|
+ def test_settings_init(self):
|
|
|
+ settings_module = ModuleType("fake_settings_module")
|
|
|
+ settings_module.USE_TZ = True
|
|
|
+ settings_module.STATICFILES_STORAGE = (
|
|
|
+ "django.contrib.staticfiles.storage.ManifestStaticFilesStorage"
|
|
|
+ )
|
|
|
+ sys.modules["fake_settings_module"] = settings_module
|
|
|
+ try:
|
|
|
+ with self.assertRaisesMessage(RemovedInDjango51Warning, self.msg):
|
|
|
+ Settings("fake_settings_module")
|
|
|
+ finally:
|
|
|
+ del sys.modules["fake_settings_module"]
|
|
|
+
|
|
|
+ def test_access_warning(self):
|
|
|
+ with self.assertRaisesMessage(RemovedInDjango51Warning, self.msg):
|
|
|
+ settings.STATICFILES_STORAGE
|
|
|
+ # Works a second time.
|
|
|
+ with self.assertRaisesMessage(RemovedInDjango51Warning, self.msg):
|
|
|
+ settings.STATICFILES_STORAGE
|
|
|
+
|
|
|
+ @ignore_warnings(category=RemovedInDjango51Warning)
|
|
|
+ def test_access(self):
|
|
|
+ with self.settings(
|
|
|
+ STATICFILES_STORAGE=(
|
|
|
+ "django.contrib.staticfiles.storage.ManifestStaticFilesStorage"
|
|
|
+ )
|
|
|
+ ):
|
|
|
+ self.assertEqual(
|
|
|
+ settings.STATICFILES_STORAGE,
|
|
|
+ "django.contrib.staticfiles.storage.ManifestStaticFilesStorage",
|
|
|
+ )
|
|
|
+ # Works a second time.
|
|
|
+ self.assertEqual(
|
|
|
+ settings.STATICFILES_STORAGE,
|
|
|
+ "django.contrib.staticfiles.storage.ManifestStaticFilesStorage",
|
|
|
+ )
|
|
|
+
|
|
|
+ def test_use_both_error(self):
|
|
|
+ msg = "STATICFILES_STORAGE/STORAGES are mutually exclusive."
|
|
|
+ settings_module = ModuleType("fake_settings_module")
|
|
|
+ settings_module.USE_TZ = True
|
|
|
+ settings_module.STATICFILES_STORAGE = (
|
|
|
+ "django.contrib.staticfiles.storage.ManifestStaticFilesStorage"
|
|
|
+ )
|
|
|
+ settings_module.STORAGES = {}
|
|
|
+ sys.modules["fake_settings_module"] = settings_module
|
|
|
+ try:
|
|
|
+ with self.assertRaisesMessage(ImproperlyConfigured, msg):
|
|
|
+ Settings("fake_settings_module")
|
|
|
+ finally:
|
|
|
+ del sys.modules["fake_settings_module"]
|
|
|
+
|
|
|
+ @ignore_warnings(category=RemovedInDjango51Warning)
|
|
|
+ def test_storage(self):
|
|
|
+ empty_storages = StorageHandler()
|
|
|
+ with self.settings(
|
|
|
+ STATICFILES_STORAGE=(
|
|
|
+ "django.contrib.staticfiles.storage.ManifestStaticFilesStorage"
|
|
|
+ )
|
|
|
+ ):
|
|
|
+ self.assertIsInstance(
|
|
|
+ storages[STATICFILES_STORAGE_ALIAS],
|
|
|
+ ManifestStaticFilesStorage,
|
|
|
+ )
|
|
|
+ self.assertIsInstance(
|
|
|
+ empty_storages[STATICFILES_STORAGE_ALIAS],
|
|
|
+ ManifestStaticFilesStorage,
|
|
|
+ )
|
|
|
+ self.assertIsInstance(staticfiles_storage, ManifestStaticFilesStorage)
|
|
|
+
|
|
|
+
|
|
|
+class DefaultStorageDeprecationTests(TestCase):
|
|
|
+ msg = DEFAULT_FILE_STORAGE_DEPRECATED_MSG
|
|
|
+
|
|
|
+ def test_override_settings_warning(self):
|
|
|
+ with self.assertRaisesMessage(RemovedInDjango51Warning, self.msg):
|
|
|
+ with self.settings(
|
|
|
+ DEFAULT_FILE_STORAGE=("django.core.files.storage.Storage")
|
|
|
+ ):
|
|
|
+ pass
|
|
|
+
|
|
|
+ def test_settings_init(self):
|
|
|
+ settings_module = ModuleType("fake_settings_module")
|
|
|
+ settings_module.USE_TZ = True
|
|
|
+ settings_module.DEFAULT_FILE_STORAGE = "django.core.files.storage.Storage"
|
|
|
+ sys.modules["fake_settings_module"] = settings_module
|
|
|
+ try:
|
|
|
+ with self.assertRaisesMessage(RemovedInDjango51Warning, self.msg):
|
|
|
+ Settings("fake_settings_module")
|
|
|
+ finally:
|
|
|
+ del sys.modules["fake_settings_module"]
|
|
|
+
|
|
|
+ def test_access_warning(self):
|
|
|
+ with self.assertRaisesMessage(RemovedInDjango51Warning, self.msg):
|
|
|
+ settings.DEFAULT_FILE_STORAGE
|
|
|
+ # Works a second time.
|
|
|
+ with self.assertRaisesMessage(RemovedInDjango51Warning, self.msg):
|
|
|
+ settings.DEFAULT_FILE_STORAGE
|
|
|
+
|
|
|
+ @ignore_warnings(category=RemovedInDjango51Warning)
|
|
|
+ def test_access(self):
|
|
|
+ with self.settings(DEFAULT_FILE_STORAGE="django.core.files.storage.Storage"):
|
|
|
+ self.assertEqual(
|
|
|
+ settings.DEFAULT_FILE_STORAGE,
|
|
|
+ "django.core.files.storage.Storage",
|
|
|
+ )
|
|
|
+ # Works a second time.
|
|
|
+ self.assertEqual(
|
|
|
+ settings.DEFAULT_FILE_STORAGE,
|
|
|
+ "django.core.files.storage.Storage",
|
|
|
+ )
|
|
|
+
|
|
|
+ def test_use_both_error(self):
|
|
|
+ msg = "DEFAULT_FILE_STORAGE/STORAGES are mutually exclusive."
|
|
|
+ settings_module = ModuleType("fake_settings_module")
|
|
|
+ settings_module.USE_TZ = True
|
|
|
+ settings_module.DEFAULT_FILE_STORAGE = "django.core.files.storage.Storage"
|
|
|
+ settings_module.STORAGES = {}
|
|
|
+ sys.modules["fake_settings_module"] = settings_module
|
|
|
+ try:
|
|
|
+ with self.assertRaisesMessage(ImproperlyConfigured, msg):
|
|
|
+ Settings("fake_settings_module")
|
|
|
+ finally:
|
|
|
+ del sys.modules["fake_settings_module"]
|
|
|
+
|
|
|
+ @ignore_warnings(category=RemovedInDjango51Warning)
|
|
|
+ def test_storage(self):
|
|
|
+ empty_storages = StorageHandler()
|
|
|
+ with self.settings(DEFAULT_FILE_STORAGE="django.core.files.storage.Storage"):
|
|
|
+ self.assertIsInstance(storages[DEFAULT_STORAGE_ALIAS], Storage)
|
|
|
+ self.assertIsInstance(empty_storages[DEFAULT_STORAGE_ALIAS], Storage)
|
|
|
+ self.assertIsInstance(default_storage, Storage)
|