diff options
author | Jon Dufresne <jon.dufresne@gmail.com> | 2020-04-13 11:49:39 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-13 11:49:39 -0700 |
commit | ae173f0f5126dcd8db9f43d6fdb37439873e9233 (patch) | |
tree | d9a57bdbb7d1d254abd1dc409ea403b6b0dae9fd | |
parent | 1f857f0053606c23cb3f1abd794e3efbf6981e09 (diff) | |
download | redis-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.py | 6 | ||||
-rw-r--r-- | tox.ini | 2 |
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 @@ -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 |