summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Dufresne <jon.dufresne@gmail.com>2020-04-13 11:49:39 -0700
committerGitHub <noreply@github.com>2020-04-13 11:49:39 -0700
commitae173f0f5126dcd8db9f43d6fdb37439873e9233 (patch)
treed9a57bdbb7d1d254abd1dc409ea403b6b0dae9fd
parent1f857f0053606c23cb3f1abd794e3efbf6981e09 (diff)
downloadredis-py-ae173f0f5126dcd8db9f43d6fdb37439873e9233.tar.gz
Enable BytesWarning during test and fix discovered case (#1322)
The Python command line argument -b causes Python to emit a warning when bytes and str usage is mixed. This is generally considered bad practice as either one or the other is required. Enabling this feature during tests helps catch them before reaching production. The warning appeared as: tests/test_scripting.py::TestScripting::test_eval_msgpack_pipeline_error_in_lua .../redis-py/redis/client.py:3967: BytesWarning: str() on a bytes instance cmd = ' '.join(imap(safe_unicode, command))
-rw-r--r--redis/_compat.py6
-rw-r--r--tox.ini2
2 files changed, 6 insertions, 2 deletions
diff --git a/redis/_compat.py b/redis/_compat.py
index e4cc34c..146e37d 100644
--- a/redis/_compat.py
+++ b/redis/_compat.py
@@ -166,6 +166,11 @@ else:
def nativestr(x):
return x if isinstance(x, str) else x.decode('utf-8', 'replace')
+ def safe_unicode(value):
+ if isinstance(value, bytes):
+ value = value.decode('utf-8', 'replace')
+ return str(value)
+
next = next
unichr = chr
imap = map
@@ -173,7 +178,6 @@ else:
xrange = range
basestring = str
unicode = str
- safe_unicode = str
long = int
BlockingIOError = BlockingIOError
diff --git a/tox.ini b/tox.ini
index 6ead282..35a4cbb 100644
--- a/tox.ini
+++ b/tox.ini
@@ -9,7 +9,7 @@ deps =
pytest >= 2.7.0
extras =
hiredis: hiredis
-commands = {envpython} -m coverage run -m pytest -W always {posargs}
+commands = {envpython} -b -m coverage run -m pytest -W always {posargs}
[testenv:pycodestyle]
basepython = python3.6