mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 07:27:17 +02:00
Merge branch 'develop-ascraeus' into develop
This commit is contained in:
commit
1981f4f966
@ -16,15 +16,28 @@ namespace phpbb;
|
|||||||
class error_collector
|
class error_collector
|
||||||
{
|
{
|
||||||
var $errors;
|
var $errors;
|
||||||
|
var $error_types;
|
||||||
|
|
||||||
function __construct()
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* The variable $error_types may be set to a mask of PHP error types that
|
||||||
|
* the collector should keep, e.g. `E_ALL`. If unset, the current value of
|
||||||
|
* the error_reporting() function will be used to determine which errors
|
||||||
|
* the collector will keep.
|
||||||
|
*
|
||||||
|
* @see PHPBB3-13306
|
||||||
|
* @param int|null $error_types
|
||||||
|
*/
|
||||||
|
function __construct($error_types = null)
|
||||||
{
|
{
|
||||||
$this->errors = array();
|
$this->errors = array();
|
||||||
|
$this->error_types = $error_types;
|
||||||
}
|
}
|
||||||
|
|
||||||
function install()
|
function install()
|
||||||
{
|
{
|
||||||
set_error_handler(array(&$this, 'error_handler'));
|
set_error_handler(array(&$this, 'error_handler'), ($this->error_types !== null) ? $this->error_types : error_reporting());
|
||||||
}
|
}
|
||||||
|
|
||||||
function uninstall()
|
function uninstall()
|
||||||
|
@ -17,7 +17,7 @@ class phpbb_error_collector_test extends phpbb_test_case
|
|||||||
{
|
{
|
||||||
public function test_collection()
|
public function test_collection()
|
||||||
{
|
{
|
||||||
$collector = new \phpbb\error_collector;
|
$collector = new \phpbb\error_collector(E_ALL | E_STRICT); // php set_error_handler() default
|
||||||
$collector->install();
|
$collector->install();
|
||||||
|
|
||||||
// Cause a warning
|
// Cause a warning
|
||||||
@ -35,4 +35,32 @@ class phpbb_error_collector_test extends phpbb_test_case
|
|||||||
$this->assertStringStartsWith('Errno 2: Division by zero at ', $error_contents);
|
$this->assertStringStartsWith('Errno 2: Division by zero at ', $error_contents);
|
||||||
$this->assertStringEndsWith(" line $line", $error_contents);
|
$this->assertStringEndsWith(" line $line", $error_contents);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_collection_with_mask()
|
||||||
|
{
|
||||||
|
$collector = new \phpbb\error_collector(E_ALL & ~E_NOTICE); // not collecting notices
|
||||||
|
$collector->install();
|
||||||
|
|
||||||
|
// Cause a warning
|
||||||
|
1/0; $line = __LINE__;
|
||||||
|
|
||||||
|
// Cause a notice
|
||||||
|
$array = array('ITEM' => 'value');
|
||||||
|
$value = $array[ITEM]; $line2 = __LINE__;
|
||||||
|
|
||||||
|
$collector->uninstall();
|
||||||
|
|
||||||
|
// The notice should not be collected
|
||||||
|
$this->assertEmpty($collector->errors[1]);
|
||||||
|
|
||||||
|
list($errno, $msg_text, $errfile, $errline) = $collector->errors[0];
|
||||||
|
$error_contents = $collector->format_errors();
|
||||||
|
|
||||||
|
$this->assertEquals($errno, 2);
|
||||||
|
|
||||||
|
// Unfortunately $error_contents will contain the full path here,
|
||||||
|
// because the tests directory is outside of phpbb root path.
|
||||||
|
$this->assertStringStartsWith('Errno 2: Division by zero at ', $error_contents);
|
||||||
|
$this->assertStringEndsWith(" line $line", $error_contents);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user