diff --git a/cake/tests/cases/libs/html_coverage_report.test.php b/cake/tests/cases/libs/html_coverage_report.test.php index 136528e36..5e2786907 100644 --- a/cake/tests/cases/libs/html_coverage_report.test.php +++ b/cake/tests/cases/libs/html_coverage_report.test.php @@ -143,9 +143,9 @@ PHP; $result = $this->Coverage->getExecutableLines(explode("\n", $contents)); $expected = array( 0 => false, - 1 => true, - 2 => true, - 3 => true, + 1 => false, + 2 => false, + 3 => false, 4 => true, 5 => true, 6 => false, @@ -186,14 +186,14 @@ PHP; 3 => 1, 4 => 1, 5 => -1, - 6 => -1, - 7 => -1, + 6 => 1, + 7 => 1, 8 => 1, 9 => -1, 10 => 1, ); $result = $this->Coverage->generateDiff('myfile.php', $file, $coverage); - $this->assertRegExp('/
/', $result); foreach ($file as $i => $line) { diff --git a/cake/tests/lib/coverage/html_coverage_report.php b/cake/tests/lib/coverage/html_coverage_report.php index 2f6510f4c..e4440b995 100644 --- a/cake/tests/lib/coverage/html_coverage_report.php +++ b/cake/tests/lib/coverage/html_coverage_report.php @@ -150,14 +150,27 @@ class HtmlCoverageReport { $phpTagPattern = '/^[ |\t]*[<\?php|\?>]+[ |\t]*/'; $basicallyEmptyPattern = '/^[ |\t]*[{|}|\(|\)]+[ |\t]*/'; + $commentStart = '/\/\*\*/'; + $commentEnd = '/\*\//'; $ignoreStart = '/@codeCoverageIgnoreStart/'; $ignoreStop = '/@codeCoverageIgnoreEnd/'; + $inComment = false; foreach ($lines as $lineno => $line) { $runnable = true; if (preg_match($phpTagPattern, $line) || preg_match($basicallyEmptyPattern, $line)) { $runnable = false; } + if ($runnable && preg_match($commentStart, $line)) { + $runnable = false; + $inComment = true; + } + if ($inComment == true) { + $runnable = false; + } + if (!$runnable && preg_match($commentEnd, $line)) { + $inComment = false; + } $output[$lineno] = $runnable; } return $output; @@ -183,22 +196,22 @@ class HtmlCoverageReport { $executableLines = $this->getExecutableLines($fileLines); foreach ($fileLines as $lineno => $line) { - $isExecutable = (isset($executableLines[$lineno]) && $executableLines[$lineno] == true); + $manualFind = ( + isset($executableLines[$lineno]) && + $executableLines[$lineno] == true && + trim($line) != '' + ); - $class = 'uncovered'; - if (!$isExecutable) { - $class = 'ignored'; - } elseif (isset($coverageData[$lineno]) && $coverageData[$lineno] > 0) { - $class = 'covered'; + $class = 'ignored'; + if ($manualFind) { + $class = 'uncovered'; + $total++; + if (isset($coverageData[$lineno]) && $coverageData[$lineno] > 0) { + $class = 'covered'; + $covered++; + } } $diff[] = $this->_paintLine($line, $lineno, $class); - - if ($class == 'covered') { - $covered++; - } - if ($class == 'uncovered' || $class == 'covered') { - $total++; - } } $percentCovered = round($covered / $total, 2);