Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed #16410 -- Fixed get_cache to behave gracefully when given a str…

…ing that can't be split. Thanks, jedie.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16511 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 90b6181657eafe1601ee90e4af26cd32cb301fb4 1 parent 6de65ab
Jannis Leidel jezdez authored
6 django/core/cache/__init__.py
View
@@ -126,12 +126,12 @@ def parse_backend_conf(backend, **kwargs):
location = args.pop('LOCATION', '')
return backend, location, args
else:
- # Trying to import the given backend, in case it's a dotted path
- mod_path, cls_name = backend.rsplit('.', 1)
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)
backend_cls = getattr(mod, cls_name)
- except (AttributeError, ImportError):
+ except (AttributeError, ImportError, ValueError):
raise InvalidCacheBackendError("Could not find backend '%s'" % backend)
location = kwargs.pop('LOCATION', '')
return backend, location, kwargs
19 tests/regressiontests/cache/tests.py
View
@@ -12,7 +12,7 @@
from django.conf import settings
from django.core import management
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.http import HttpResponse, HttpRequest, QueryDict
from django.middleware.cache import FetchFromCacheMiddleware, UpdateCacheMiddleware, CacheMiddleware
@@ -938,6 +938,23 @@ def test_custom_key_validation(self):
cache.set(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):
"""TestCase for django.utils.cache functions."""
Please sign in to comment.
Something went wrong with that request. Please try again.