summaryrefslogtreecommitdiff
path: root/django/test/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/test/utils.py')
-rw-r--r--django/test/utils.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/django/test/utils.py b/django/test/utils.py
index 550d7642b9..ce7536bd6d 100644
--- a/django/test/utils.py
+++ b/django/test/utils.py
@@ -9,6 +9,7 @@ import warnings
from functools import wraps
from xml.dom.minidom import parseString, Node
+from django.apps import app_cache
from django.conf import settings, UserSettingsHolder
from django.core import mail
from django.core.signals import request_started
@@ -190,6 +191,8 @@ class override_settings(object):
"""
def __init__(self, **kwargs):
self.options = kwargs
+ # Special case that requires updating the app cache, a core feature.
+ self.installed_apps = self.options.get('INSTALLED_APPS')
def __enter__(self):
self.enable()
@@ -223,6 +226,8 @@ class override_settings(object):
setattr(override, key, new_value)
self.wrapped = settings._wrapped
settings._wrapped = override
+ if self.installed_apps is not None:
+ app_cache.set_installed_apps(self.installed_apps)
for key, new_value in self.options.items():
setting_changed.send(sender=settings._wrapped.__class__,
setting=key, value=new_value, enter=True)
@@ -230,6 +235,8 @@ class override_settings(object):
def disable(self):
settings._wrapped = self.wrapped
del self.wrapped
+ if self.installed_apps is not None:
+ app_cache.unset_installed_apps()
for key in self.options:
new_value = getattr(settings, key, None)
setting_changed.send(sender=settings._wrapped.__class__,