Skip to content

Commit

Permalink
Fix stack traces not being highlighted correctly.
Browse files Browse the repository at this point in the history
Fixes #3439
  • Loading branch information
markstory committed Dec 9, 2012
1 parent 6cf6903 commit 1e49be3
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 10 deletions.
8 changes: 7 additions & 1 deletion lib/Cake/Test/Case/Utility/DebuggerTest.php
Expand Up @@ -84,7 +84,13 @@ public function testExcerpt() {
$this->assertTrue(is_array($result));
$this->assertEquals(4, count($result));

$pattern = '/<code><span style\="color\: \#\d+">.*?&lt;\?php/';
$pattern = '/<code>.*?<span style\="color\: \#\d+">.*?&lt;\?php/';
$this->assertRegExp($pattern, $result[0]);

$result = Debugger::excerpt(__FILE__, 10, 2);
$this->assertEquals(5, count($result));

$pattern = '/<span style\="color\: \#\d{6}">\*<\/span>/';
$this->assertRegExp($pattern, $result[0]);

$return = Debugger::excerpt('[internal]', 2, 2);
Expand Down
30 changes: 21 additions & 9 deletions lib/Cake/Utility/Debugger.php
Expand Up @@ -396,12 +396,14 @@ public static function excerpt($file, $line, $context = 2) {
return array();
}
$data = file_get_contents($file);
if (!empty($data) && strpos($data, "\n") !== false) {
if (empty($data)) {
return $lines;
}
if (strpos($data, "\n") !== false) {
$data = explode("\n", $data);
}

if (empty($data) || !isset($data[$line])) {
return;
if (!isset($data[$line])) {
return $lines;
}
for ($i = $line - ($context + 1); $i < $line + $context; $i++) {
if (!isset($data[$i])) {
Expand All @@ -425,13 +427,23 @@ public static function excerpt($file, $line, $context = 2) {
* @return string
*/
protected static function _highlight($str) {
static $supportHighlight = null;
if (!$supportHighlight && function_exists('hphp_log')) {
$supportHighlight = false;
if (function_exists('hphp_log')) {
return htmlentities($str);
}
$supportHighlight = true;
return highlight_string($str, true);
$added = false;
if (strpos($str, '<?php') === false) {
$added = true;
$str = "<?php \n" . $str;
}
$highlight = highlight_string($str, true);
if ($added) {
$highlight = str_replace(
'&lt;?php&nbsp;<br />',
'',
$highlight
);
}
return $highlight;
}

/**
Expand Down

0 comments on commit 1e49be3

Please sign in to comment.