diff options
author | Joas Schilling <coding@schilljs.com> | 2017-04-20 12:23:34 +0200 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2017-04-20 12:23:34 +0200 |
commit | 24789ba0f4b6961adce71fca1dc58b847d1e5e22 (patch) | |
tree | 4929a94c4c07821c4ef8bc78988d37ad38823453 /tests/lib/Memcache | |
parent | 38c901fadfdd116d0597428789eb3963e200f9d4 (diff) | |
download | nextcloud-server-24789ba0f4b6961adce71fca1dc58b847d1e5e22.tar.gz nextcloud-server-24789ba0f4b6961adce71fca1dc58b847d1e5e22.zip |
Restoring the error handler within the error handler causes unexpected results
See http://php.net/manual/en/function.restore-error-handler.php#120879
for more information.
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'tests/lib/Memcache')
-rw-r--r-- | tests/lib/Memcache/RedisTest.php | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/tests/lib/Memcache/RedisTest.php b/tests/lib/Memcache/RedisTest.php index 094954d4a1a..e707f30fb5b 100644 --- a/tests/lib/Memcache/RedisTest.php +++ b/tests/lib/Memcache/RedisTest.php @@ -17,15 +17,22 @@ class RedisTest extends Cache { self::markTestSkipped('The redis extension is not available.'); } + $errorOccurred = false; set_error_handler( function($errno, $errstr) { - restore_error_handler(); - self::markTestSkipped($errstr); + throw new \RuntimeException($errstr, 123456789); }, E_WARNING ); - $instance = new \OC\Memcache\Redis(self::getUniqueID()); + try { + $instance = new \OC\Memcache\Redis(self::getUniqueID()); + } catch (\RuntimeException $e) { + $errorOccurred = $e->getCode() === 123456789 ? $e->getMessage() : false; + } restore_error_handler(); + if ($errorOccurred !== false) { + self::markTestSkipped($errorOccurred); + } if ($instance->set(self::getUniqueID(), self::getUniqueID()) === false) { self::markTestSkipped('redis server seems to be down.'); |