diff options
| author | Claude Paroz <claude@2xlibre.net> | 2017-08-18 21:18:24 +0200 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2017-08-23 23:05:18 +0200 |
| commit | 09b3e46635da8048ac94ddbf058e37ec9ef31400 (patch) | |
| tree | 8214bbb160f756865de5d3e815a184874a3d33a3 | |
| parent | f2b93b509c174ba5e2c82fc4e88537bad0996577 (diff) | |
Fixed #27796 -- Prevented middleware being loaded twice with runserver
Thanks Tim Graham for the review.
| -rw-r--r-- | django/contrib/staticfiles/handlers.py | 5 | ||||
| -rw-r--r-- | tests/staticfiles_tests/test_management.py | 13 |
2 files changed, 17 insertions, 1 deletions
diff --git a/django/contrib/staticfiles/handlers.py b/django/contrib/staticfiles/handlers.py index 13453c9ac5..2ec6d07d71 100644 --- a/django/contrib/staticfiles/handlers.py +++ b/django/contrib/staticfiles/handlers.py @@ -21,6 +21,11 @@ class StaticFilesHandler(WSGIHandler): self.base_url = urlparse(self.get_base_url()) super().__init__() + def load_middleware(self): + # Middleware are already loaded for self.application; no need to reload + # them for self. + pass + def get_base_url(self): utils.check_settings() return settings.STATIC_URL diff --git a/tests/staticfiles_tests/test_management.py b/tests/staticfiles_tests/test_management.py index 4a5963417e..54c271b793 100644 --- a/tests/staticfiles_tests/test_management.py +++ b/tests/staticfiles_tests/test_management.py @@ -11,7 +11,9 @@ from admin_scripts.tests import AdminScriptTestCase from django.conf import settings from django.contrib.staticfiles import storage -from django.contrib.staticfiles.management.commands import collectstatic +from django.contrib.staticfiles.management.commands import ( + collectstatic, runserver, +) from django.core.exceptions import ImproperlyConfigured from django.core.management import call_command from django.test import override_settings @@ -34,6 +36,15 @@ class TestNoFilesCreated: self.assertEqual(os.listdir(settings.STATIC_ROOT), []) +class TestRunserver(StaticFilesTestCase): + @override_settings(MIDDLEWARE=['django.middleware.common.CommonMiddleware']) + def test_middleware_loaded_only_once(self): + command = runserver.Command() + with mock.patch('django.middleware.common.CommonMiddleware') as mocked: + command.get_handler(use_static_handler=True, insecure_serving=True) + self.assertEqual(mocked.call_count, 1) + + class TestFindStatic(TestDefaults, CollectionTestCase): """ Test ``findstatic`` management command. |
