mirror of
https://github.com/predis/predis.git
synced 2026-09-18 22:38:42 +00:00
[tests] Improve base command test case.
This commit is contained in:
@@ -159,12 +159,11 @@ abstract class CommandTestCase extends StandardTestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $expectedVersion
|
||||
* @param string $message Optional message.
|
||||
* @throws \RuntimeException when unable to retrieve server info or redis version
|
||||
* @param string $expectedVersion Expected redis version
|
||||
* @param string $operator Comparison operator.
|
||||
* @throws \PHPUnit_Framework_SkippedTestError when expected redis version is not met
|
||||
*/
|
||||
protected function markTestSkippedOnRedisVersionBelow($expectedVersion, $message = '')
|
||||
protected function executeOnRedisVersion($expectedVersion, $operator, $callback)
|
||||
{
|
||||
$client = $this->getClient();
|
||||
$info = array_change_key_case($client->info());
|
||||
@@ -179,9 +178,47 @@ abstract class CommandTestCase extends StandardTestCase
|
||||
throw new \RuntimeException('Unable to retrieve server info');
|
||||
}
|
||||
|
||||
if (version_compare($version, $expectedVersion) <= -1) {
|
||||
$this->markTestSkipped($message ?: "Test requires Redis $expectedVersion, current is $version.");
|
||||
$comparation = version_compare($version, $expectedVersion);
|
||||
|
||||
if ($match = eval("return $comparation $operator 0;")) {
|
||||
call_user_func($callback, $this, $version);
|
||||
}
|
||||
|
||||
return $match;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $expectedVersion Expected redis version
|
||||
* @param string $operator Comparison operator.
|
||||
* @throws \PHPUnit_Framework_SkippedTestError when expected redis version is not met
|
||||
*/
|
||||
protected function executeOnProfileVersion($expectedVersion, $operator, $callback)
|
||||
{
|
||||
$profile = $this->getProfile();
|
||||
$comparation = version_compare($profile->getVersion(), $expectedVersion);
|
||||
|
||||
if ($match = eval("return $comparation $operator 0;")) {
|
||||
call_user_func($callback, $this, $version);
|
||||
}
|
||||
|
||||
return $match;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $expectedVersion Expected redis version.
|
||||
* @param string $message Optional message.
|
||||
* @param bool $remote Based on local profile or remote redis version.
|
||||
* @throws \RuntimeException when unable to retrieve server info or redis version
|
||||
* @throws \PHPUnit_Framework_SkippedTestError when expected redis version is not met
|
||||
*/
|
||||
protected function markTestSkippedOnRedisVersionBelow($expectedVersion, $message = '', $remote = true)
|
||||
{
|
||||
$callback = function ($test, $version) use ($message, $expectedVersion) {
|
||||
$test->markTestSkipped($message ?: "Test requires Redis $expectedVersion, current is $version.");
|
||||
};
|
||||
|
||||
$method = $remote ? 'executeOnRedisVersion' : 'executeOnProfileVersion';
|
||||
$this->$method($expectedVersion, '<', $callback);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user