MCPcopy
hub / github.com/redis/redis-py / test_set_ifdeq_and_ifdne

Method test_set_ifdeq_and_ifdne

tests/test_commands.py:3053–3077  ·  view source on GitHub ↗
(self, r, val)

Source from the content-addressed store, hash-verified

3051 @skip_if_server_version_lt("8.3.224")
3052 @pytest.mark.parametrize("val", [b"", b"abc", b"The quick brown fox"])
3053 def test_set_ifdeq_and_ifdne(self, r, val):
3054 r.delete("k")
3055 r.set("k", val)
3056 d = self._server_xxh3_digest(r, "k")
3057 assert d is not None
3058
3059 # sanity check: local digest matches server's
3060 assert d == self._ensure_str(r.digest_local(val))
3061
3062 # IFDEQ must match to set; if key missing => won't create
3063 assert r.set("k", b"X", ifdeq=d) is True
3064 assert r.get("k") == b"X"
3065
3066 r.delete("k")
3067 # key missing + IFDEQ => not created
3068 assert r.set("k", b"Y", ifdeq=d) is None
3069 assert r.exists("k") == 0
3070
3071 # IFDNE: create when missing, and set when digest differs
3072 assert r.set("k", b"bar", ifdne=d) is True
3073 prev_d = self._server_xxh3_digest(r, "k")
3074 assert prev_d is not None
3075 # If digest equal → do not set
3076 assert r.set("k", b"zzz", ifdne=prev_d) is None
3077 assert r.get("k") == b"bar"
3078
3079 @skip_if_server_version_lt("8.3.224")
3080 def test_set_with_get_returns_previous_value(self, r):

Callers

nothing calls this directly

Calls 7

_server_xxh3_digestMethod · 0.95
_ensure_strMethod · 0.95
digest_localMethod · 0.80
deleteMethod · 0.45
setMethod · 0.45
getMethod · 0.45
existsMethod · 0.45

Tested by

no test coverage detected