From 720671dd24695ea3853adba6dc1c70d167b05632 Mon Sep 17 00:00:00 2001 From: Evgeniy Mitin Date: Mon, 13 Aug 2018 01:24:22 +0300 Subject: [PATCH 1/4] Function smembers returns deepcopy --- fakeredis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fakeredis.py b/fakeredis.py index 5954232..7009800 100644 --- a/fakeredis.py +++ b/fakeredis.py @@ -1362,7 +1362,7 @@ def sismember(self, name, value): def smembers(self, name): "Return all members of the set ``name``" - return self._get_set(name) + return copy.deepcopy(self._get_set(name)) @_remove_empty def smove(self, src, dst, value): From 10964ba654072771902af4b5632889b2706c971c Mon Sep 17 00:00:00 2001 From: Evgeniy Mitin Date: Thu, 16 Aug 2018 14:07:48 +0300 Subject: [PATCH 2/4] Add tests --- fakeredis.py | 2 +- test_fakeredis.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/fakeredis.py b/fakeredis.py index 7009800..138e23b 100644 --- a/fakeredis.py +++ b/fakeredis.py @@ -1362,7 +1362,7 @@ def sismember(self, name, value): def smembers(self, name): "Return all members of the set ``name``" - return copy.deepcopy(self._get_set(name)) + return self._get_set(name).copy() @_remove_empty def smove(self, src, dst, value): diff --git a/test_fakeredis.py b/test_fakeredis.py index 8b1ae48..01cc8d6 100644 --- a/test_fakeredis.py +++ b/test_fakeredis.py @@ -1487,12 +1487,20 @@ def test_sismember_wrong_type(self): def test_smembers(self): self.assertEqual(self.redis.smembers('foo'), set()) + self.redis.sadd('foo', 'member1') + self.assertIsNot(self.redis._get_set('foo'), + self.redis.smembers('foo')) def test_smembers_wrong_type(self): self.redis.zadd('foo', 1, 'member') with self.assertRaises(redis.ResponseError): self.redis.smembers('foo') + def test_smembers_runtime_error(self): + self.redis.sadd('foo', 'member1', 'member2') + for member in self.redis.smembers('foo'): + self.redis.srem('foo', member) + def test_smove(self): self.redis.sadd('foo', 'member1') self.redis.sadd('foo', 'member2') From b38eeb07f72d7055953024fed4b6837ca9e74dc6 Mon Sep 17 00:00:00 2001 From: Evgeniy Mitin Date: Thu, 16 Aug 2018 14:31:42 +0300 Subject: [PATCH 3/4] Remove error --- test_fakeredis.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/test_fakeredis.py b/test_fakeredis.py index 01cc8d6..d45ce3e 100644 --- a/test_fakeredis.py +++ b/test_fakeredis.py @@ -1487,9 +1487,6 @@ def test_sismember_wrong_type(self): def test_smembers(self): self.assertEqual(self.redis.smembers('foo'), set()) - self.redis.sadd('foo', 'member1') - self.assertIsNot(self.redis._get_set('foo'), - self.redis.smembers('foo')) def test_smembers_wrong_type(self): self.redis.zadd('foo', 1, 'member') From 2b02f98e39dca314734b2d5786bb9a460813b90e Mon Sep 17 00:00:00 2001 From: Evgeniy Mitin Date: Fri, 17 Aug 2018 12:50:26 +0300 Subject: [PATCH 4/4] Add test smembers copy --- test_fakeredis.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test_fakeredis.py b/test_fakeredis.py index d45ce3e..71fc30b 100644 --- a/test_fakeredis.py +++ b/test_fakeredis.py @@ -1488,6 +1488,12 @@ def test_sismember_wrong_type(self): def test_smembers(self): self.assertEqual(self.redis.smembers('foo'), set()) + def test_smembers_copy(self): + self.redis.sadd('foo', 'member1') + set = self.redis.smembers('foo') + self.redis.sadd('foo', 'member2') + self.assertNotEqual(set, self.redis.smembers('foo')) + def test_smembers_wrong_type(self): self.redis.zadd('foo', 1, 'member') with self.assertRaises(redis.ResponseError):