Fixed #16410 -- Fixed get_cache to behave gracefully when given a string that can't be split. Thanks, jedie.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16511 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
6de65ab76f
commit
90b6181657
|
@ -126,12 +126,12 @@ def parse_backend_conf(backend, **kwargs):
|
||||||
location = args.pop('LOCATION', '')
|
location = args.pop('LOCATION', '')
|
||||||
return backend, location, args
|
return backend, location, args
|
||||||
else:
|
else:
|
||||||
# Trying to import the given backend, in case it's a dotted path
|
|
||||||
mod_path, cls_name = backend.rsplit('.', 1)
|
|
||||||
try:
|
try:
|
||||||
|
# Trying to import the given backend, in case it's a dotted path
|
||||||
|
mod_path, cls_name = backend.rsplit('.', 1)
|
||||||
mod = importlib.import_module(mod_path)
|
mod = importlib.import_module(mod_path)
|
||||||
backend_cls = getattr(mod, cls_name)
|
backend_cls = getattr(mod, cls_name)
|
||||||
except (AttributeError, ImportError):
|
except (AttributeError, ImportError, ValueError):
|
||||||
raise InvalidCacheBackendError("Could not find backend '%s'" % backend)
|
raise InvalidCacheBackendError("Could not find backend '%s'" % backend)
|
||||||
location = kwargs.pop('LOCATION', '')
|
location = kwargs.pop('LOCATION', '')
|
||||||
return backend, location, kwargs
|
return backend, location, kwargs
|
||||||
|
|
|
@ -12,7 +12,7 @@ import warnings
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core import management
|
from django.core import management
|
||||||
from django.core.cache import get_cache, DEFAULT_CACHE_ALIAS
|
from django.core.cache import get_cache, DEFAULT_CACHE_ALIAS
|
||||||
from django.core.cache.backends.base import CacheKeyWarning
|
from django.core.cache.backends.base import CacheKeyWarning, InvalidCacheBackendError
|
||||||
from django.db import connections, router
|
from django.db import connections, router
|
||||||
from django.http import HttpResponse, HttpRequest, QueryDict
|
from django.http import HttpResponse, HttpRequest, QueryDict
|
||||||
from django.middleware.cache import FetchFromCacheMiddleware, UpdateCacheMiddleware, CacheMiddleware
|
from django.middleware.cache import FetchFromCacheMiddleware, UpdateCacheMiddleware, CacheMiddleware
|
||||||
|
@ -938,6 +938,23 @@ class CustomCacheKeyValidationTests(unittest.TestCase):
|
||||||
cache.set(key, val)
|
cache.set(key, val)
|
||||||
self.assertEqual(cache.get(key), val)
|
self.assertEqual(cache.get(key), val)
|
||||||
|
|
||||||
|
|
||||||
|
class GetCacheTests(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_simple(self):
|
||||||
|
cache = get_cache('locmem://')
|
||||||
|
from django.core.cache.backends.locmem import LocMemCache
|
||||||
|
self.assertTrue(isinstance(cache, LocMemCache))
|
||||||
|
|
||||||
|
from django.core.cache import cache
|
||||||
|
self.assertTrue(isinstance(cache, get_cache('default').__class__))
|
||||||
|
|
||||||
|
cache = get_cache(
|
||||||
|
'django.core.cache.backends.dummy.DummyCache', **{'TIMEOUT': 120})
|
||||||
|
self.assertEqual(cache.default_timeout, 120)
|
||||||
|
|
||||||
|
self.assertRaises(InvalidCacheBackendError, get_cache, 'does_not_exist')
|
||||||
|
|
||||||
class CacheUtils(unittest.TestCase):
|
class CacheUtils(unittest.TestCase):
|
||||||
"""TestCase for django.utils.cache functions."""
|
"""TestCase for django.utils.cache functions."""
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue