From b2b2723512dd0024567fba0c680424ebb7fa1149 Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Fri, 5 Jun 2020 07:21:52 +0200 Subject: [PATCH] [2.2.x] Fixed #31654 -- Fixed cache key validation messages. Backport of 926148ef019abcac3a9988c78734d9336d69f24e from master. --- django/core/cache/backends/base.py | 2 +- docs/releases/2.2.14.txt | 13 +++++++++++++ docs/releases/index.txt | 1 + tests/cache/tests.py | 6 ++++-- 4 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 docs/releases/2.2.14.txt diff --git a/django/core/cache/backends/base.py b/django/core/cache/backends/base.py index 70de0a8b70..245c2fb828 100644 --- a/django/core/cache/backends/base.py +++ b/django/core/cache/backends/base.py @@ -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 diff --git a/docs/releases/2.2.14.txt b/docs/releases/2.2.14.txt new file mode 100644 index 0000000000..0c7232fe08 --- /dev/null +++ b/docs/releases/2.2.14.txt @@ -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`). diff --git a/docs/releases/index.txt b/docs/releases/index.txt index d9fccd441e..2a355d3d94 100644 --- a/docs/releases/index.txt +++ b/docs/releases/index.txt @@ -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 diff --git a/tests/cache/tests.py b/tests/cache/tests.py index d18a917106..0581aa37aa 100644 --- a/tests/cache/tests.py +++ b/tests/cache/tests.py @@ -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