From 517c24bcfabcc704a6b3b3f1eb39b05a3cf41954 Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Fri, 20 Dec 2013 10:44:32 +0100 Subject: [PATCH] Complained on override_settings(INSTALLED_APPS=...). Currently such overrides aren't reflected in the app cache. It would be possible to handle them. But that doesn't look like a very good API. It makes it complicated to express "add this app" and "remove this app", which are the most common operations on INSTALLED_APPS. --- django/test/signals.py | 2 +- tests/app_loading/tests.py | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/django/test/signals.py b/django/test/signals.py index 8086d50b32..0d6b7bedf1 100644 --- a/django/test/signals.py +++ b/django/test/signals.py @@ -17,7 +17,7 @@ setting_changed = Signal(providing_args=["setting", "value", "enter"]) # except for cases where the receiver is related to a contrib app. # Settings that may not work well when using 'override_settings' (#19031) -COMPLEX_OVERRIDE_SETTINGS = set(['DATABASES']) +COMPLEX_OVERRIDE_SETTINGS = set(['DATABASES', 'INSTALLED_APPS']) @receiver(setting_changed) diff --git a/tests/app_loading/tests.py b/tests/app_loading/tests.py index bb71ad84a2..dcd0fa34c0 100644 --- a/tests/app_loading/tests.py +++ b/tests/app_loading/tests.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals import os import sys from unittest import TestCase +import warnings from django.core.apps import app_cache from django.core.apps.cache import AppCache @@ -77,11 +78,13 @@ class EggLoadingTest(TestCase): # Pretend we're the master app cache to test the population process. app_cache._apps_loaded = False app_cache._models_loaded = False - with override_settings(INSTALLED_APPS=('notexists',)): - with self.assertRaises(ImportError): - app_cache.get_model('notexists', 'nomodel') - with self.assertRaises(ImportError): - app_cache.get_model('notexists', 'nomodel') + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", "Overriding setting INSTALLED_APPS") + with override_settings(INSTALLED_APPS=['notexists']): + with self.assertRaises(ImportError): + app_cache.get_model('notexists', 'nomodel') + with self.assertRaises(ImportError): + app_cache.get_model('notexists', 'nomodel') class GetModelsTest(TestCase):