From fb647430f00cc7bb67c978e75f2dabc661567779 Mon Sep 17 00:00:00 2001 From: Shay Fadida Date: Wed, 9 Nov 2022 14:22:27 +0200 Subject: Fix special response parsing options handling (#2302) * Fix special response parsing options handling When using special response parsing options like `NEVER_DECODE` and `EMPTY_RESPONSE`, don't pass them to the response callbacks because some of them are not prepared for receiving named arguments. Instead, redis-py should use them before calling the callbacks and then discard them. * Use kwargs instead of options * change options to kwargs in asyncio/cluster.py/L878 Co-authored-by: Chayim Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com> --- tests/test_asyncio/test_commands.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'tests/test_asyncio/test_commands.py') diff --git a/tests/test_asyncio/test_commands.py b/tests/test_asyncio/test_commands.py index 1242e04..67471bb 100644 --- a/tests/test_asyncio/test_commands.py +++ b/tests/test_asyncio/test_commands.py @@ -11,7 +11,7 @@ import pytest_asyncio import redis from redis import exceptions -from redis.client import parse_info +from redis.client import EMPTY_RESPONSE, NEVER_DECODE, parse_info from tests.conftest import ( skip_if_server_version_gte, skip_if_server_version_lt, @@ -542,6 +542,16 @@ class TestRedisCommands: assert isinstance(t[0], int) assert isinstance(t[1], int) + async def test_never_decode_option(self, r: redis.Redis): + opts = {NEVER_DECODE: []} + await r.delete("a") + assert await r.execute_command("EXISTS", "a", **opts) == 0 + + async def test_empty_response_option(self, r: redis.Redis): + opts = {EMPTY_RESPONSE: []} + await r.delete("a") + assert await r.execute_command("EXISTS", "a", **opts) == 0 + # BASIC KEY COMMANDS async def test_append(self, r: redis.Redis): assert await r.append("a", "a1") == 2 -- cgit v1.2.1