Пример #1
0
 public function format($event)
 {
     switch ($event['priorityName']) {
         case 'ERR':
             $errorType = 'Error';
             $colour = 'red';
             break;
         case 'WARN':
             $errorType = 'Warning';
             $colour = 'orange';
             break;
         case 'NOTICE':
             $errorType = 'Notice';
             $colour = 'grey';
             break;
         default:
             $errorType = $event['priorityName'];
             $colour = 'grey';
     }
     if (!is_array($event['message'])) {
         return false;
     }
     $errno = $event['message']['errno'];
     $errstr = $event['message']['errstr'];
     $errfile = $event['message']['errfile'];
     $errline = $event['message']['errline'];
     $errcontext = $event['message']['errcontext'];
     $data = '';
     $data .= '<style type="text/css">html, body, table {font-family: sans-serif; font-size: 12px;}</style>';
     $data .= "<div style=\"border: 5px {$colour} solid;\">\n";
     $data .= "<p style=\"color: white; background-color: {$colour}; margin: 0\">[{$errorType}] ";
     $data .= nl2br(htmlspecialchars($errstr)) . "<br />{$errfile}:{$errline}\n<br />\n<br />\n</p>\n";
     // Render the provided backtrace
     $data .= SS_Backtrace::get_rendered_backtrace($errcontext);
     // Compile extra data
     $blacklist = array('message', 'timestamp', 'priority', 'priorityName');
     $extras = array_diff_key($event, array_combine($blacklist, $blacklist));
     if ($extras) {
         $data .= "<h3>Details</h3>\n";
         $data .= "<table class=\"extras\">\n";
         foreach ($extras as $k => $v) {
             if (is_array($v)) {
                 $v = var_export($v, true);
             }
             $data .= sprintf("<tr><td><strong>%s</strong></td><td><pre>%s</pre></td></tr>\n", $k, $v);
         }
         $data .= "</table>\n";
     }
     $data .= "</div>\n";
     $relfile = Director::makeRelative($errfile);
     if ($relfile && $relfile[0] == '/') {
         $relfile = substr($relfile, 1);
     }
     $host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : null;
     $uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : null;
     $subject = "[{$errorType}] in {$relfile}:{$errline} (http://{$host}{$uri})";
     return array('subject' => $subject, 'data' => $data);
 }
 public function format($event)
 {
     switch ($event['priorityName']) {
         case 'ERR':
             $errorType = 'Error';
             break;
         case 'WARN':
             $errorType = 'Warning';
             break;
         case 'NOTICE':
             $errorType = 'Notice';
             break;
         default:
             $errorType = $event['priorityName'];
     }
     if (!is_array($event['message'])) {
         return false;
     }
     $errno = $event['message']['errno'];
     $errstr = $event['message']['errstr'];
     $errfile = $event['message']['errfile'];
     $errline = $event['message']['errline'];
     $errcontext = $event['message']['errcontext'];
     $protocol = 'http';
     if (isset($_SERVER['HTTPS'])) {
         $protocol = 'https';
     }
     $host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : null;
     $uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : null;
     $relfile = Director::makeRelative($errfile);
     if ($relfile && $relfile[0] == '/') {
         $relfile = substr($relfile, 1);
     }
     $data = "[{$errorType}] in {$relfile}:{$errline} ({$protocol}://{$host}{$uri})\n";
     // Render the provided backtrace
     $data .= SS_Backtrace::get_rendered_backtrace($errcontext, true);
     // Compile extra data
     $blacklist = array('message', 'timestamp', 'priority', 'priorityName');
     $extras = array_diff_key($event, array_combine($blacklist, $blacklist));
     if ($extras) {
         $data .= "DETAILS\n\n";
         foreach ($extras as $k => $v) {
             if (is_array($v)) {
                 $v = var_export($v, true);
             }
             $data .= sprintf("[%s]\n%s\n\n", strtoupper($k), $v);
         }
     }
     $subject = "[{$errorType}] in {$relfile}:{$errline} ({$host})";
     return array('subject' => $subject, 'data' => $data);
 }
 /**
  * Write a backtrace
  */
 function writeTrace($trace = null)
 {
     echo "Trace\n=====\n";
     echo SS_Backtrace::get_rendered_backtrace($trace ? $trace : debug_backtrace(), true);
 }
 /**
  * Writes a status message to the output stream in a user readable HTML format
  * @param string $name Name of the object that generated the error
  * @param string $message Message of the error
  * @param array $trace Stacktrace
  */
 protected function writeResultError($name, $message, $trace)
 {
     echo "<div class=\"failure\"><h2 class=\"test-case\">&otimes; " . $this->testNameToPhrase($name) . "</h2>";
     echo "<pre>" . htmlentities($message, ENT_COMPAT, 'UTF-8') . "</pre>";
     echo SS_Backtrace::get_rendered_backtrace($trace);
     echo "</div>";
 }
 /**
  * Display error bar if it exists
  */
 public function writeResults()
 {
     $passCount = 0;
     $failCount = 0;
     $testCount = 0;
     $incompleteCount = 0;
     $errorCount = 0;
     foreach ($this->suiteResults['suites'] as $suite) {
         foreach ($suite['tests'] as $test) {
             $testCount++;
             if ($test['status'] == 2) {
                 $incompleteCount++;
             } elseif ($test['status'] == 1) {
                 $passCount++;
             } else {
                 $failCount++;
             }
             if ($test['status'] != 1) {
                 echo "<div class=\"failure\"><h2 class=\"test-case\">&otimes; " . $this->testNameToPhrase($test['name']) . "</h2>";
                 echo "<pre>" . htmlentities($test['message'], ENT_COMPAT, 'UTF-8') . "</pre>";
                 echo SS_Backtrace::get_rendered_backtrace($test['trace']);
                 echo "</div>";
             }
         }
     }
     $result = $failCount > 0 ? 'fail' : 'pass';
     echo "<div class=\"status {$result}\">";
     echo "<h2><span>{$testCount}</span> tests run: <span>{$passCount}</span> passes, <span>{$failCount}</span> failures, and <span>{$incompleteCount}</span> incomplete</h2>";
     echo "</div>";
 }
 protected function writeTest($test)
 {
     if ($test['status'] != TEST_SUCCESS) {
         $filteredTrace = array();
         $ignoredClasses = array('TestRunner');
         foreach ($test['trace'] as $item) {
             if (isset($item['file']) && strpos($item['file'], 'PHPUnit/Framework') === false && (!isset($item['class']) || !in_array($item['class'], $ignoredClasses))) {
                 $filteredTrace[] = $item;
             }
             if (isset($item['class']) && isset($item['function']) && $item['class'] == 'PHPUnit_Framework_TestSuite' && $item['function'] == 'run') {
                 break;
             }
         }
         $color = $test['status'] == 2 ? 'yellow' : 'red';
         echo "\n" . SS_Cli::text($test['name'] . "\n" . $test['message'] . "\n", $color, null);
         echo SS_Backtrace::get_rendered_backtrace($filteredTrace, true);
         echo "--------------------\n";
     }
 }
 /**
  * Display error bar if it exists
  */
 public function writeResults()
 {
     $passCount = 0;
     $failCount = 0;
     $testCount = 0;
     $errorCount = 0;
     foreach ($this->suiteResults['suites'] as $suite) {
         foreach ($suite['tests'] as $test) {
             $testCount++;
             $test['status'] == 1 ? $passCount++ : $failCount++;
             if ($test['status'] != 1) {
                 echo "<div class=\"failure\"><span>&otimes; " . $this->testNameToPhrase($test['name']) . "</span><br>";
                 echo "<pre>" . htmlentities($test['message']) . "</pre><br>";
                 echo SS_Backtrace::get_rendered_backtrace($test['trace']);
                 echo "</div>";
             }
         }
     }
     $result = $failCount > 0 ? 'fail' : 'pass';
     echo "<div class=\"{$result}\">";
     echo "<h2><span>{$testCount}</span> tests run: <span>{$passCount}</span> passes, <span>{$failCount}</span> fails, and <span>0</span> exceptions</h2>";
     echo "</div>";
 }
Пример #8
0
 /**
  * Write a backtrace
  */
 public function renderTrace($trace = null)
 {
     $output = "Trace\n=====\n";
     $output .= SS_Backtrace::get_rendered_backtrace($trace ? $trace : debug_backtrace(), true);
     return $output;
 }
Пример #9
0
 /**
  * Write a backtrace
  */
 function writeTrace($trace)
 {
     echo '<h3>Trace</h3>';
     echo SS_Backtrace::get_rendered_backtrace($trace);
     echo '</div>';
 }
Пример #10
0
 /**
  * Render a call track
  *
  * @param  array $trace The debug_backtrace() array
  * @return string
  */
 public function renderTrace($trace)
 {
     $output = '<h3>Trace</h3>';
     $output .= SS_Backtrace::get_rendered_backtrace($trace);
     $output .= '</div>';
     return $output;
 }
Пример #11
0
 /**
  * @deprecated 2.5 Please use {@link SS_Backtrace::get_rendered_backtrace()}
  */
 static function get_rendered_backtrace($bt, $plainText = false)
 {
     Deprecation::notice('2.5', 'Use SS_Backtrace::get_rendered_backtrace() instead.');
     return SS_Backtrace::get_rendered_backtrace($bt, $plainText);
 }
Пример #12
0
 /**
  * @deprecated 2.5 Please use {@link SS_Backtrace::get_rendered_backtrace()}
  */
 static function get_rendered_backtrace($bt, $plainText = false)
 {
     user_error('Debug::get_rendered_backtrace() is deprecated. Please use SS_Backtrace::get_rendered_backtrace() instead', E_USER_NOTICE);
     return SS_Backtrace::get_rendered_backtrace($bt, $plainText);
 }
Пример #13
0
 protected function writeTest($test)
 {
     if ($test['status'] != 1) {
         $filteredTrace = array();
         $ignoredClasses = array('TestRunner');
         foreach ($test['trace'] as $item) {
             if (isset($item['file']) && strpos($item['file'], 'PHPUnit/Framework') === false && (!isset($item['class']) || !in_array($item['class'], $ignoredClasses))) {
                 $filteredTrace[] = $item;
             }
             if (isset($item['class']) && isset($item['function']) && $item['class'] == 'PHPUnit_Framework_TestSuite' && $item['function'] == 'run') {
                 break;
             }
         }
         echo "\n\n" . SS_Cli::text($this->testNameToPhrase($test['name']) . "\n" . $test['message'] . "\n", 'red', null, true);
         echo SS_Cli::text("In line {$test['exception']['line']} of {$test['exception']['file']}" . "\n\n", 'red');
         echo SS_Backtrace::get_rendered_backtrace($filteredTrace, true);
         echo "\n--------------------\n";
     }
 }