summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/bash_completion/tests.py8
-rw-r--r--tests/i18n/tests.py26
-rw-r--r--tests/staticfiles_tests/test_liveserver.py3
-rw-r--r--tests/template_tests/test_loaders.py27
-rw-r--r--tests/template_tests/tests.py13
-rw-r--r--tests/utils_tests/test_module_loading.py9
-rw-r--r--tests/view_tests/tests/test_i18n.py16
7 files changed, 65 insertions, 37 deletions
diff --git a/tests/bash_completion/tests.py b/tests/bash_completion/tests.py
index 6ff709809d..85fb58904c 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.conf import settings
+from django.core.apps import app_cache
from django.core.management import ManagementUtility
from django.utils.six import StringIO
@@ -84,5 +84,7 @@ class BashCompletionTests(unittest.TestCase):
"Application names will be autocompleted for an AppCommand"
self._user_input('django-admin.py sqlall a')
output = self._run_autocomplete()
- app_labels = [name.split('.')[-1] for name in settings.INSTALLED_APPS]
- self.assertEqual(output, sorted(label for label in app_labels if label.startswith('a')))
+ a_labels = sorted(app_config.label
+ for app_config in app_cache.get_app_configs()
+ if app_config.label.startswith('a'))
+ self.assertEqual(output, a_labels)
diff --git a/tests/i18n/tests.py b/tests/i18n/tests.py
index 77b7d18455..339317c541 100644
--- a/tests/i18n/tests.py
+++ b/tests/i18n/tests.py
@@ -9,6 +9,7 @@ import pickle
from threading import local
from django.conf import settings
+from django.core.apps import app_cache
from django.template import Template, Context
from django.template.base import TemplateSyntaxError
from django.test import TestCase, RequestFactory
@@ -1035,11 +1036,29 @@ class ResolutionOrderI18NTests(TransRealMixin, TestCase):
"translation of '%s'; the actual result is '%s'." % (msgstr, msgid, result)))
-@override_settings(INSTALLED_APPS=['i18n.resolution'] + list(settings.INSTALLED_APPS))
class AppResolutionOrderI18NTests(ResolutionOrderI18NTests):
def test_app_translation(self):
- self.assertUgettext('Date/time', 'APP')
+ # This test relies on an implementation detail, namely the fact that
+ # _with_app adds the app at the list. Adjust the test if this changes.
+
+ # Original translation.
+ self.assertUgettext('Date/time', 'Datum/Zeit')
+
+ # Different translation.
+ with app_cache._with_app('i18n.resolution'):
+ self.flush_caches()
+ activate('de')
+
+ # Doesn't work because it's added later in the list.
+ self.assertUgettext('Date/time', 'Datum/Zeit')
+
+ with app_cache._without_app('admin'):
+ self.flush_caches()
+ activate('de')
+
+ # Unless the original is removed from the list.
+ self.assertUgettext('Date/time', 'Datum/Zeit (APP)')
@override_settings(LOCALE_PATHS=extended_locale_paths)
@@ -1049,8 +1068,7 @@ class LocalePathsResolutionOrderI18NTests(ResolutionOrderI18NTests):
self.assertUgettext('Time', 'LOCALE_PATHS')
def test_locale_paths_override_app_translation(self):
- extended_apps = list(settings.INSTALLED_APPS) + ['i18n.resolution']
- with self.settings(INSTALLED_APPS=extended_apps):
+ with app_cache._with_app('i18n.resolution'):
self.assertUgettext('Time', 'LOCALE_PATHS')
diff --git a/tests/staticfiles_tests/test_liveserver.py b/tests/staticfiles_tests/test_liveserver.py
index 71f4bb89a1..6fa64240cc 100644
--- a/tests/staticfiles_tests/test_liveserver.py
+++ b/tests/staticfiles_tests/test_liveserver.py
@@ -86,6 +86,9 @@ class StaticLiveServerChecks(LiveServerBase):
class StaticLiveServerView(LiveServerBase):
+ # The test is going to access a static file stored in this application.
+ available_apps = ['staticfiles_tests.apps.test']
+
def urlopen(self, url):
return urlopen(self.live_server_url + url)
diff --git a/tests/template_tests/test_loaders.py b/tests/template_tests/test_loaders.py
index 6e74477e83..551bd7fb72 100644
--- a/tests/template_tests/test_loaders.py
+++ b/tests/template_tests/test_loaders.py
@@ -20,6 +20,7 @@ except ImportError:
pkg_resources = None
+from django.core.apps import app_cache
from django.template import TemplateDoesNotExist, Context
from django.template.loaders.eggs import Loader as EggLoader
from django.template import loader
@@ -49,7 +50,6 @@ def create_egg(name, resources):
@unittest.skipUnless(pkg_resources, 'setuptools is not installed')
-@override_settings(INSTALLED_APPS=[])
class EggLoaderTest(TestCase):
def setUp(self):
# Defined here b/c at module scope we may not have pkg_resources
@@ -78,29 +78,28 @@ class EggLoaderTest(TestCase):
os.path.normcase('templates/x.txt'): StringIO("x"),
})
- @override_settings(INSTALLED_APPS=['egg_empty'])
def test_empty(self):
"Loading any template on an empty egg should fail"
- egg_loader = EggLoader()
- self.assertRaises(TemplateDoesNotExist, egg_loader.load_template_source, "not-existing.html")
+ with app_cache._with_app('egg_empty'):
+ egg_loader = EggLoader()
+ self.assertRaises(TemplateDoesNotExist, egg_loader.load_template_source, "not-existing.html")
- @override_settings(INSTALLED_APPS=['egg_1'])
def test_non_existing(self):
"Template loading fails if the template is not in the egg"
- egg_loader = EggLoader()
- self.assertRaises(TemplateDoesNotExist, egg_loader.load_template_source, "not-existing.html")
+ with app_cache._with_app('egg_1'):
+ egg_loader = EggLoader()
+ self.assertRaises(TemplateDoesNotExist, egg_loader.load_template_source, "not-existing.html")
- @override_settings(INSTALLED_APPS=['egg_1'])
def test_existing(self):
"A template can be loaded from an egg"
- egg_loader = EggLoader()
- contents, template_name = egg_loader.load_template_source("y.html")
- self.assertEqual(contents, "y")
- self.assertEqual(template_name, "egg:egg_1:templates/y.html")
+ with app_cache._with_app('egg_1'):
+ egg_loader = EggLoader()
+ contents, template_name = egg_loader.load_template_source("y.html")
+ self.assertEqual(contents, "y")
+ self.assertEqual(template_name, "egg:egg_1:templates/y.html")
- @override_settings(INSTALLED_APPS=[])
def test_not_installed(self):
- "Loading an existent template from an egg not included in INSTALLED_APPS should fail"
+ "Loading an existent template from an egg not included in any app should fail"
egg_loader = EggLoader()
self.assertRaises(TemplateDoesNotExist, egg_loader.load_template_source, "y.html")
diff --git a/tests/template_tests/tests.py b/tests/template_tests/tests.py
index 651d46d4f1..61a46a81f9 100644
--- a/tests/template_tests/tests.py
+++ b/tests/template_tests/tests.py
@@ -16,6 +16,7 @@ import unittest
import warnings
from django import template
+from django.core.apps import app_cache
from django.core import urlresolvers
from django.template import (base as template_base, loader, Context,
RequestContext, Template, TemplateSyntaxError)
@@ -1873,24 +1874,26 @@ class TemplateTagLoading(TestCase):
self.assertTrue('ImportError' in e.args[0])
self.assertTrue('Xtemplate' in e.args[0])
- @override_settings(INSTALLED_APPS=('tagsegg',))
def test_load_error_egg(self):
ttext = "{% load broken_egg %}"
egg_name = '%s/tagsegg.egg' % self.egg_dir
sys.path.append(egg_name)
- self.assertRaises(template.TemplateSyntaxError, template.Template, ttext)
+ with self.assertRaises(template.TemplateSyntaxError):
+ with app_cache._with_app('tagsegg'):
+ template.Template(ttext)
try:
- template.Template(ttext)
+ with app_cache._with_app('tagsegg'):
+ template.Template(ttext)
except template.TemplateSyntaxError as e:
self.assertTrue('ImportError' in e.args[0])
self.assertTrue('Xtemplate' in e.args[0])
- @override_settings(INSTALLED_APPS=('tagsegg',))
def test_load_working_egg(self):
ttext = "{% load working_egg %}"
egg_name = '%s/tagsegg.egg' % self.egg_dir
sys.path.append(egg_name)
- template.Template(ttext)
+ with app_cache._with_app('tagsegg'):
+ template.Template(ttext)
class RequestContextTests(unittest.TestCase):
diff --git a/tests/utils_tests/test_module_loading.py b/tests/utils_tests/test_module_loading.py
index 5a7eadcedf..0c8dfe1e12 100644
--- a/tests/utils_tests/test_module_loading.py
+++ b/tests/utils_tests/test_module_loading.py
@@ -5,9 +5,9 @@ import sys
import unittest
from zipimport import zipimporter
+from django.core.apps import app_cache
from django.core.exceptions import ImproperlyConfigured
from django.test import SimpleTestCase
-from django.test.utils import override_settings
from django.utils import six
from django.utils.module_loading import autodiscover_modules, import_by_path, module_has_submodule
from django.utils._os import upath
@@ -135,9 +135,14 @@ class ModuleImportTestCase(unittest.TestCase):
'Should have more than the calling frame in the traceback.')
-@override_settings(INSTALLED_APPS=('utils_tests.test_module',))
class AutodiscoverModulesTestCase(SimpleTestCase):
+ def setUp(self):
+ self._with_test_module = app_cache._begin_with_app('utils_tests.test_module')
+
+ def tearDown(self):
+ app_cache._end_with_app(self._with_test_module)
+
def test_autodiscover_modules_found(self):
autodiscover_modules('good_module')
diff --git a/tests/view_tests/tests/test_i18n.py b/tests/view_tests/tests/test_i18n.py
index 42f82251f5..19bbde286c 100644
--- a/tests/view_tests/tests/test_i18n.py
+++ b/tests/view_tests/tests/test_i18n.py
@@ -5,6 +5,7 @@ from os import path
import unittest
from django.conf import settings
+from django.core.apps import app_cache
from django.core.urlresolvers import reverse
from django.test import LiveServerTestCase, TestCase
from django.test.utils import override_settings
@@ -115,9 +116,8 @@ class JsI18NTests(TestCase):
available. The Javascript i18n view must return a NON empty language catalog
with the proper English translations. See #13726 for more details.
"""
- extended_apps = list(settings.INSTALLED_APPS) + ['view_tests.app0']
- with self.settings(LANGUAGE_CODE='fr', INSTALLED_APPS=extended_apps):
- with override('en-us'):
+ with app_cache._with_app('view_tests.app0'):
+ with self.settings(LANGUAGE_CODE='fr'), override('en-us'):
response = self.client.get('/views/jsi18n_english_translation/')
self.assertContains(response, javascript_quote('this app0 string is to be translated'))
@@ -144,9 +144,8 @@ class JsI18NTestsMultiPackage(TestCase):
translations of multiple Python packages is requested. See #13388,
#3594 and #13514 for more details.
"""
- extended_apps = list(settings.INSTALLED_APPS) + ['view_tests.app1', 'view_tests.app2']
- with self.settings(LANGUAGE_CODE='en-us', INSTALLED_APPS=extended_apps):
- with override('fr'):
+ with app_cache._with_app('view_tests.app1'), app_cache._with_app('view_tests.app2'):
+ with self.settings(LANGUAGE_CODE='en-us'), override('fr'):
response = self.client.get('/views/jsi18n_multi_packages1/')
self.assertContains(response, javascript_quote('il faut traduire cette chaîne de caractères de app1'))
@@ -155,9 +154,8 @@ class JsI18NTestsMultiPackage(TestCase):
Similar to above but with neither default or requested language being
English.
"""
- extended_apps = list(settings.INSTALLED_APPS) + ['view_tests.app3', 'view_tests.app4']
- with self.settings(LANGUAGE_CODE='fr', INSTALLED_APPS=extended_apps):
- with override('es-ar'):
+ with app_cache._with_app('view_tests.app3'), app_cache._with_app('view_tests.app4'):
+ with self.settings(LANGUAGE_CODE='fr'), override('es-ar'):
response = self.client.get('/views/jsi18n_multi_packages2/')
self.assertContains(response, javascript_quote('este texto de app3 debe ser traducido'))