diff options
Diffstat (limited to 'tests/pipeline.py')
-rw-r--r-- | tests/pipeline.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/pipeline.py b/tests/pipeline.py index cd130d1..da85e55 100644 --- a/tests/pipeline.py +++ b/tests/pipeline.py @@ -23,3 +23,33 @@ class PipelineTestCase(unittest.TestCase): [('z1', 2.0), ('z2', 4)] ] ) + + def test_invalid_command_in_pipeline(self): + # all commands but the invalid one should be excuted correctly + self.client['c'] = 'a' + pipe = self.client.pipeline() + pipe.set('a', 1).set('b', 2).lpush('c', 3).set('d', 4) + result = pipe.execute() + + self.assertEquals(result[0], True) + self.assertEquals(self.client['a'], '1') + self.assertEquals(result[1], True) + self.assertEquals(self.client['b'], '2') + # we can't lpush to a key that's a string value, so this should + # be a ResponseError exception + self.assert_(isinstance(result[2], redis.ResponseError)) + self.assertEquals(self.client['c'], 'a') + self.assertEquals(result[3], True) + self.assertEquals(self.client['d'], '4') + + # make sure the pipe was restored to a working state + self.assertEquals(pipe.set('z', 'zzz').execute(), [True]) + self.assertEquals(self.client['z'], 'zzz') + + def test_pipe_cannot_select(self): + pipe = self.client.pipeline() + self.assertRaises(redis.RedisError, + pipe.select, 'localhost', 6379, db=9) + + + |