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\">⊗ " . $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\">⊗ " . $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>⊗ " . $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>"; }
/** * 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; }
/** * Write a backtrace */ function writeTrace($trace) { echo '<h3>Trace</h3>'; echo SS_Backtrace::get_rendered_backtrace($trace); echo '</div>'; }
/** * 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; }
/** * @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); }
/** * @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); }
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"; } }