Compare commits

...

6 Commits
2.6 ... v2.3.33

Author SHA1 Message Date
Nicolas Grekas
77d632fd72 [php7] Fix for substr() always returning a string 2015-07-28 14:38:40 +02:00
Nicolas Grekas
20c5dad1af Enhance hhvm test skip message 2015-07-03 07:54:45 +02:00
Nicolas Grekas
8f1257608f Towards 100% HHVM compat 2015-06-30 15:39:12 +02:00
Nicolas Grekas
355f12cf08 [2.3][Debug] Fix fatal-errors handling on HHVM 2015-06-16 14:35:43 +02:00
Vladimir Reznichenko
ff6a582db5 Php Inspections (EA Extended): - resolved possible PHP Fatal in \Symfony\Component\BrowserKit\Cookie::__toString -resolved implicit magic methods calls -resolved callable name case mismatches 2015-05-29 19:14:48 +02:00
Nicolas Grekas
30d1de52f1 Fix HTML escaping of to-source links 2015-05-19 17:44:44 -07:00
3 changed files with 15 additions and 9 deletions

View File

@@ -133,6 +133,7 @@ class ErrorHandler
unset($context['GLOBALS']);
}
$level &= E_ALL | E_STRICT;
$exception = new ContextErrorException(sprintf('%s: %s in %s line %d', isset($this->levels[$level]) ? $this->levels[$level] : $level, $message, $file, $line), 0, $level, $file, $line, $context);
// Exceptions thrown from error handlers are sometimes not caught by the exception
@@ -173,7 +174,7 @@ class ErrorHandler
}
$this->reservedMemory = '';
$type = $error['type'];
$type = $error['type'] & (E_ALL | E_STRICT);
if (0 === $this->level || !in_array($type, array(E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_PARSE))) {
return;
}

View File

@@ -157,10 +157,11 @@ EOF
}
if (isset($trace['file']) && isset($trace['line'])) {
if ($linkFormat = ini_get('xdebug.file_link_format')) {
$link = str_replace(array('%f', '%l'), array($trace['file'], $trace['line']), $linkFormat);
$content .= sprintf(' in <a href="%s" title="Go to source">%s line %s</a>', $link, $trace['file'], $trace['line']);
$link = strtr($linkFormat, array('%f' => $trace['file'], '%l' => $trace['line']));
$link = htmlspecialchars($link, $flags, $this->charset);
$content .= sprintf(' in <a href="%s" title="Go to source">%s line %d</a>', $link, htmlspecialchars($trace['file'], $flags, $this->charset), $trace['line']);
} else {
$content .= sprintf(' in %s line %s', $trace['file'], $trace['line']);
$content .= sprintf(' in %s line %d', htmlspecialchars($trace['file'], $flags, $this->charset), $trace['line']);
}
}
$content .= "</li>\n";

View File

@@ -39,6 +39,10 @@ class ErrorHandlerTest extends \PHPUnit_Framework_TestCase
public function testCompileTimeError()
{
if (defined('HHVM_VERSION')) {
$this->markTestSkipped('HHVM does not trigger strict notices.');
}
// the ContextErrorException must not be loaded to test the workaround
// for https://bugs.php.net/bug.php?id=65322.
if (class_exists('Symfony\Component\Debug\Exception\ContextErrorException', false)) {
@@ -62,10 +66,10 @@ class ErrorHandlerTest extends \PHPUnit_Framework_TestCase
$that->assertEquals(2, $exception->getLine());
if (PHP_VERSION_ID < 70000) {
$that->assertEquals(E_STRICT, $exception->getSeverity());
$that->assertStringStartsWith('Runtime Notice: Declaration of _CompileTimeError::foo() should be compatible with', $exception->getMessage());
$that->assertStringStartsWith('Runtime Notice: Declaration', $exception->getMessage());
} else {
$that->assertEquals(E_WARNING, $exception->getSeverity());
$that->assertStringStartsWith('Warning: Declaration of _CompileTimeError::foo() should be compatible with', $exception->getMessage());
$that->assertStringStartsWith('Warning: Declaration', $exception->getMessage());
}
$that->assertArrayHasKey('bar', $exception->getContext());
};
@@ -107,7 +111,7 @@ PHP
$that->assertEquals(E_NOTICE, $exception->getSeverity());
$that->assertEquals(__LINE__ + 40, $exception->getLine());
$that->assertEquals(__FILE__, $exception->getFile());
$that->assertRegexp('/^Notice: Undefined variable: (foo|bar)/', $exception->getMessage());
$that->assertRegExp('/^Notice: Undefined variable: (foo|bar)/', $exception->getMessage());
$that->assertArrayHasKey('foobar', $exception->getContext());
$trace = $exception->getTrace();
@@ -117,11 +121,11 @@ PHP
$that->assertEquals('->', $trace[0]['type']);
$that->assertEquals(__FILE__, $trace[1]['file']);
$that->assertEquals(__CLASS__, $trace[1]['class']);
$that->assertEquals('Symfony\Component\Debug\Tests\ErrorHandlerTest', $trace[1]['class']);
$that->assertEquals('triggerNotice', $trace[1]['function']);
$that->assertEquals('::', $trace[1]['type']);
$that->assertEquals(__CLASS__, $trace[2]['class']);
$that->assertEquals('Symfony\Component\Debug\Tests\ErrorHandlerTest', $trace[2]['class']);
$that->assertEquals('testNotice', $trace[2]['function']);
$that->assertEquals('->', $trace[2]['type']);
};