Skip to content

Commit 19ed93a

Browse files
authored
Plumb through options for expireat/pexpire/pexpireat (#421)
1 parent 7c5f3aa commit 19ed93a

2 files changed

Lines changed: 17 additions & 9 deletions

File tree

fakeredis/commands_mixins/generic_mixin.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,9 @@ def expire(self, key: CommandItem, seconds: int, *args: bytes) -> int:
118118
res = self._expireat(key, self._db.time + seconds, *args)
119119
return res
120120

121-
@command(name="EXPIREAT", fixed=(Key(), Int))
122-
def expireat(self, key: CommandItem, timestamp: int) -> int:
123-
return self._expireat(key, float(timestamp))
121+
@command(name="EXPIREAT", fixed=(Key(), Int), repeat=(bytes,))
122+
def expireat(self, key: CommandItem, timestamp: int, *args: bytes) -> int:
123+
return self._expireat(key, float(timestamp), *args)
124124

125125
@command(name="KEYS", fixed=(bytes,))
126126
def keys(self, pattern: bytes) -> List[bytes]:
@@ -148,13 +148,13 @@ def persist(self, key: CommandItem) -> int:
148148
key.expireat = None
149149
return 1
150150

151-
@command(name="PEXPIRE", fixed=(Key(), Int))
152-
def pexpire(self, key: CommandItem, ms: int) -> int:
153-
return self._expireat(key, self._db.time + ms / 1000.0)
151+
@command(name="PEXPIRE", fixed=(Key(), Int), repeat=(bytes,))
152+
def pexpire(self, key: CommandItem, ms: int, *args: bytes) -> int:
153+
return self._expireat(key, self._db.time + ms / 1000.0, *args)
154154

155-
@command(name="PEXPIREAT", fixed=(Key(), Int))
156-
def pexpireat(self, key: CommandItem, ms_timestamp: int) -> int:
157-
return self._expireat(key, ms_timestamp / 1000.0)
155+
@command(name="PEXPIREAT", fixed=(Key(), Int), repeat=(bytes,))
156+
def pexpireat(self, key: CommandItem, ms_timestamp: int, *args: bytes) -> int:
157+
return self._expireat(key, ms_timestamp / 1000.0, *args)
158158

159159
@command(name="PTTL", fixed=(Key(),))
160160
def pttl(self, key: CommandItem) -> int:

test/test_mixins/test_generic_commands.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@ def test_expireat_should_return_false_for_missing_key(r: redis.Redis):
3939
assert r.expireat("missing", int(time() + 1)) is False
4040

4141

42+
@pytest.mark.min_server("7")
43+
def test_expireat_should_not_expire_when_expire_is_set(r: redis.Redis):
44+
r.set("foo", "bar")
45+
assert r.get("foo") == b"bar"
46+
assert r.expireat("foo", int(time() + 100), nx=True) == 1
47+
assert r.expireat("foo", int(time() + 200), nx=True) == 0
48+
49+
4250
def test_del_operator(r: redis.Redis):
4351
r["foo"] = "bar"
4452
del r["foo"]

0 commit comments

Comments
 (0)