summaryrefslogtreecommitdiff
path: root/tests/pipeline.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/pipeline.py')
-rw-r--r--tests/pipeline.py30
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)
+
+
+