103 lines
3.4 KiB
Python
103 lines
3.4 KiB
Python
from __future__ import with_statement
|
|
from django.conf import settings
|
|
from django.test import TestCase
|
|
|
|
class SettingsTests(TestCase):
|
|
|
|
def test_override(self):
|
|
settings.TEST = 'test'
|
|
self.assertEqual('test', settings.TEST)
|
|
with self.settings(TEST='override'):
|
|
self.assertEqual('override', settings.TEST)
|
|
self.assertEqual('test', settings.TEST)
|
|
del settings.TEST
|
|
|
|
def test_override_change(self):
|
|
settings.TEST = 'test'
|
|
self.assertEqual('test', settings.TEST)
|
|
with self.settings(TEST='override'):
|
|
self.assertEqual('override', settings.TEST)
|
|
settings.TEST = 'test2'
|
|
self.assertEqual('test', settings.TEST)
|
|
del settings.TEST
|
|
|
|
def test_override_doesnt_leak(self):
|
|
self.assertRaises(AttributeError, getattr, settings, 'TEST')
|
|
with self.settings(TEST='override'):
|
|
self.assertEqual('override', settings.TEST)
|
|
settings.TEST = 'test'
|
|
self.assertRaises(AttributeError, getattr, settings, 'TEST')
|
|
|
|
#
|
|
# Regression tests for #10130: deleting settings.
|
|
#
|
|
|
|
def test_settings_delete(self):
|
|
settings.TEST = 'test'
|
|
self.assertEqual('test', settings.TEST)
|
|
del settings.TEST
|
|
self.assertRaises(AttributeError, getattr, settings, 'TEST')
|
|
|
|
def test_settings_delete_wrapped(self):
|
|
self.assertRaises(TypeError, delattr, settings, '_wrapped')
|
|
|
|
|
|
|
|
class TrailingSlashURLTests(TestCase):
|
|
settings_module = settings
|
|
|
|
def setUp(self):
|
|
self._original_media_url = self.settings_module.MEDIA_URL
|
|
|
|
def tearDown(self):
|
|
self.settings_module.MEDIA_URL = self._original_media_url
|
|
|
|
def test_blank(self):
|
|
"""
|
|
If blank, no DeprecationWarning error will be raised, even though it
|
|
doesn't end in a slash.
|
|
"""
|
|
self.settings_module.MEDIA_URL = ''
|
|
self.assertEqual('', self.settings_module.MEDIA_URL)
|
|
|
|
def test_end_slash(self):
|
|
"""
|
|
MEDIA_URL works if you end in a slash.
|
|
"""
|
|
self.settings_module.MEDIA_URL = '/foo/'
|
|
self.assertEqual('/foo/', self.settings_module.MEDIA_URL)
|
|
|
|
self.settings_module.MEDIA_URL = 'http://media.foo.com/'
|
|
self.assertEqual('http://media.foo.com/',
|
|
self.settings_module.MEDIA_URL)
|
|
|
|
def test_no_end_slash(self):
|
|
"""
|
|
MEDIA_URL raises an DeprecationWarning error if it doesn't end in a
|
|
slash.
|
|
"""
|
|
import warnings
|
|
warnings.filterwarnings('error', 'If set, MEDIA_URL must end with a slash', DeprecationWarning)
|
|
|
|
def setattr_settings(settings_module, attr, value):
|
|
setattr(settings_module, attr, value)
|
|
|
|
self.assertRaises(DeprecationWarning, setattr_settings,
|
|
self.settings_module, 'MEDIA_URL', '/foo')
|
|
|
|
self.assertRaises(DeprecationWarning, setattr_settings,
|
|
self.settings_module, 'MEDIA_URL',
|
|
'http://media.foo.com')
|
|
|
|
def test_double_slash(self):
|
|
"""
|
|
If a MEDIA_URL ends in more than one slash, presume they know what
|
|
they're doing.
|
|
"""
|
|
self.settings_module.MEDIA_URL = '/stupid//'
|
|
self.assertEqual('/stupid//', self.settings_module.MEDIA_URL)
|
|
|
|
self.settings_module.MEDIA_URL = 'http://media.foo.com/stupid//'
|
|
self.assertEqual('http://media.foo.com/stupid//',
|
|
self.settings_module.MEDIA_URL)
|