Prevent failures serializing commands with "holes" in arguments array.

This could be triggered when passing an array with "holes" to variadic commands.
Connection classes based on the protocol serialized exposed by phpiredis were
not affected by this bug.

Fixes #316.
This commit is contained in:
Daniele Alessandri
2016-05-08 18:35:06 +02:00
parent 57a7d5d3e6
commit a0487ec5f4
5 changed files with 43 additions and 4 deletions
@@ -61,4 +61,27 @@ class RequestSerializerTest extends PredisTestCase
$this->assertSame("*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n", $result);
}
/**
* @group disconnected
*/
public function testSerializerDoesNotBreakOnArgumentsWithHoles()
{
$serializer = new RequestSerializer();
$command = $this->getMock('Predis\Command\CommandInterface');
$command->expects($this->once())
->method('getId')
->will($this->returnValue('DEL'));
$command->expects($this->once())
->method('getArguments')
->will($this->returnValue(array(0 => 'key:1', 2 => 'key:2')));
$result = $serializer->serialize($command);
$this->assertSame("*3\r\n$3\r\nDEL\r\n$5\r\nkey:1\r\n$5\r\nkey:2\r\n", $result);
}
}