blob: 0c1a251b1690c3a3f06bd07bebdfa3b098e7195a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
<?php
/* Some utility functions for the test scripts */
/**
* this is used (with array filter) to filter out the test*
* methods from a PHPUnit testcase
*/
function grepForTest($var)
{
return preg_match('/\btest.*/', $var);
}
/**
* given a class name it returns an array of test* methods
*
* @param $class text classname
* @return array of methods beginning with test
*/
function getTests($class)
{
$methods = array_map('strtolower', get_class_methods($class));
return array_filter($methods, 'grepForTest');
}
/**
* Little helper function that outputs check for boxes with suitable names
*/
function testCheck($testcase, $testmethod)
{
return "<input type=\"checkbox\" name=\"testmethods[$testcase][$testmethod]\" value=\"1\">$testmethod <br>\n";
}
/**
* Little helper function that gets a backtrace if available
*/
function getBacktrace($errline = 0)
{
$message = '';
if (!function_exists('debug_backtrace')) {
$message.= 'function debug_backtrace does not exists'."\n";
}
$debug_backtrace = debug_backtrace();
array_shift($debug_backtrace);
$message.= 'Debug backtrace:'."\n";
foreach ($debug_backtrace as $trace_item) {
$message.= "\t" . ' @ ';
if (!empty($trace_item['file'])) {
$message.= basename($trace_item['file']) . ':' . $trace_item['line'];
} else {
$message.= '- PHP inner-code - ';
}
$message.= ' -- ';
if (!empty($trace_item['class'])) {
$message.= $trace_item['class'] . $trace_item['type'];
}
$message.= $trace_item['function'];
if (!empty($trace_item['args']) && is_array($trace_item['args'])) {
$args = array();
foreach ($trace_item['args'] as $arg) {
$args[] = is_scalar($arg) ? $arg : (is_object($arg) ? get_class($arg) : gettype($arg));
}
$message.= '('.implode(', ', $args).')';
} else {
$message.= '()';
}
$message.= "\n";
}
return $message;
}
require_once 'PEAR.php';
function errorHandlerPEAR($error_obj)
{
$message = "-- PEAR-Error --\n";
$message.= $error_obj->getMessage().': '.$error_obj->getUserinfo()."\n";
$message.= getBacktrace();
print_r($message);
}
PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'errorHandlerPEAR');
$GLOBALS['_show_silenced'] = false;
function errorHandler($errno, $errstr, $errfile, $errline)
{
if ((!$GLOBALS['_show_silenced'] && !error_reporting()) || $errno == 2048) {
return;
}
$message = "\n";
switch ($errno) {
case E_USER_ERROR:
$message.= "FATAL [$errno] $errstr\n";
$message.= " Fatal error in line $errline of file $errfile";
$message.= ", PHP " . PHP_VERSION . " (" . PHP_OS . ")\n";
$message.= "Aborting...\n";
die($message);
break;
case E_USER_WARNING:
$message.= "ERROR [$errno] $errstr in line $errline of file $errfile\n";
break;
case E_USER_NOTICE:
$message.= "WARNING [$errno] $errstr in line $errline of file $errfile\n";
break;
default:
$message.= "Unkown error type: [$errno] $errstr in line $errline of file $errfile\n";
break;
}
$message.= getBacktrace($errline);
print_r($message);
}
set_error_handler('errorHandler');
if (function_exists('xdebug_disable')) {
xdebug_disable();
}
?>
|