Skip to content
Permalink
Browse files

Exiting with 1 when Exception::getCode() returns non-integer values.

From php.net/exception.getcode
> Returns the exception code as integer in Exception but possibly as other type in Exception descendants (for example as string in PDOException).
  • Loading branch information...
renan committed Jun 26, 2014
1 parent e8ee25f commit 1a89a3cb9d01594c6028b0ad6cbf14843155e2b0
@@ -58,7 +58,9 @@ public function handleException(Exception $exception) {
$exception->getMessage(),
$exception->getTraceAsString()
));
return $this->_stop($exception->getCode() ? $exception->getCode() : 1);
$code = $exception->getCode();
$code = ($code && is_integer($code)) ? $code : 1;
return $this->_stop($code);
}
/**
@@ -147,4 +147,31 @@ public function testError500Exception() {
$this->Error->handleException($exception);
}
/**
* test a exception with non-integer code
*
* @return void
*/
public function testNonIntegerExceptionCode() {
if (PHP_VERSION_ID < 50300) {
$this->markTestSkipped('ReflectionProperty::setAccessible() is available since 5.3');
}
$exception = new Exception('Non-integer exception code');
$class = new ReflectionClass('Exception');
$property = $class->getProperty('code');
$property->setAccessible(true);
$property->setValue($exception, '42S22');
ConsoleErrorHandler::$stderr->expects($this->once())->method('write')
->with($this->stringContains('Non-integer exception code'));
$this->Error->expects($this->once())
->method('_stop')
->with(1);
$this->Error->handleException($exception);
}
}

0 comments on commit 1a89a3c

Please sign in to comment.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.