[2.2.x] Fixed #31654 -- Fixed cache key validation messages.

Backport of 926148ef01 from master.
This commit is contained in:
Mariusz Felisiak 2020-06-05 07:21:52 +02:00
parent b87719034a
commit b2b2723512
4 changed files with 19 additions and 3 deletions

View File

@ -287,6 +287,6 @@ def memcache_key_warnings(key):
if ord(char) < 33 or ord(char) == 127:
yield (
'Cache key contains characters that will cause errors if '
'used with memcached: %r' % key, CacheKeyWarning
'used with memcached: %r' % key
)
break

13
docs/releases/2.2.14.txt Normal file
View File

@ -0,0 +1,13 @@
===========================
Django 2.2.14 release notes
===========================
*Expected July 1, 2020*
Django 2.2.14 fixes a bug in 2.2.13.
Bugfixes
========
* Fixed messages of ``InvalidCacheKey`` exceptions and ``CacheKeyWarning``
warnings raised by cache key validation (:ticket:`31654`).

View File

@ -25,6 +25,7 @@ versions of the documentation contain the release notes for any later releases.
.. toctree::
:maxdepth: 1
2.2.14
2.2.13
2.2.12
2.2.11

View File

@ -619,8 +619,9 @@ class BaseCacheTests:
cache.key_func = func
try:
with self.assertWarnsMessage(CacheKeyWarning, expected_warning):
with self.assertWarns(CacheKeyWarning) as cm:
cache.set(key, 'value')
self.assertEqual(str(cm.warning), expected_warning)
finally:
cache.key_func = old_func
@ -1257,8 +1258,9 @@ class BaseMemcachedTests(BaseCacheTests):
invalid key.
"""
msg = expected_warning.replace(key, cache.make_key(key))
with self.assertRaisesMessage(InvalidCacheKey, msg):
with self.assertRaises(InvalidCacheKey) as cm:
cache.set(key, 'value')
self.assertEqual(str(cm.exception), msg)
def test_default_never_expiring_timeout(self):
# Regression test for #22845