/** * @return string * @access protected */ protected function renderItems() { $result = ''; foreach ($this->tests as $item) { $itemTemplate = new PHPUnit_Util_Template(PHPUnit_Util_Report::getTemplatePath() . 'testsuite_item.html'); $resultCode = $item->getResult(); if ($resultCode instanceof PHPUnit_Framework_TestFailure) { if ($resultCode->isFailure()) { $testResult = 'Failure'; } else { if ($resultCode->thrownException() instanceof PHPUnit_Framework_SkippedTest) { $testResult = 'Skipped'; } else { if ($resultCode->thrownException() instanceof PHPUnit_Framework_IncompleteTest) { $testResult = 'Incomplete'; } else { $testResult = 'Error'; } } } } else { if ($resultCode === PHPUnit_Runner_BaseTestRunner::STATUS_PASSED) { $testResult = 'Passed'; } else { $testResult = 'Error'; } } switch ($testResult) { case 'Passed': case 'Skipped': $color = 'chameleon'; break; case 'Incomplete': $color = 'butter'; break; case 'Error': case 'Failure': default: $color = 'scarlet_red'; } $itemTemplate->setVar(array('color', 'result', 'name'), array($color, $testResult, $item->getName())); $result .= $itemTemplate->render(); } return $result; }
/** * @param array $items * @param boolean $includeDetails * @return string * @access protected */ protected function doRenderItems(array $items, $includeDetails) { $result = ''; foreach ($items as $item) { $itemTemplate = new PHPUnit_Util_Template(PHPUnit_Util_Report::getTemplatePath() . 'coverage_item.html'); $details = ''; if ($includeDetails) { foreach ($item->getCoveringTests() as $suite => $tests) { $detailsHeaderTemplate = new PHPUnit_Util_Template(PHPUnit_Util_Report::getTemplatePath() . 'coverage_item_details_header.html'); $detailsHeaderTemplate->setVar('link', sprintf('<a href="%s-test.html">%s</a>', PHPUnit_Util_Filesystem::getSafeFilename($suite), $suite)); $details .= $detailsHeaderTemplate->render(); foreach ($tests as $test => $_test) { $detailsTemplate = new PHPUnit_Util_Template(PHPUnit_Util_Report::getTemplatePath() . 'coverage_item_details.html'); if ($_test['object']->getResult() !== PHPUnit_Runner_BaseTestRunner::STATUS_PASSED) { $failure = sprintf('<br /><pre>%s</pre>', htmlspecialchars($_test['object']->getResult()->exceptionMessage())); } else { $failure = ''; } $detailsTemplate->setVar(array('item', 'executed_percent', 'executed_lines', 'executable_lines'), array($test . $failure, sprintf('%01.2f', $_test['numLinesExecuted'] / $item->getNumExecutableLines() * 100), $_test['numLinesExecuted'], $item->getNumExecutableLines())); $details .= $detailsTemplate->render(); } } } $floorPercent = floor($item->getExecutedPercent()); if ($floorPercent < self::LOW_UPPER_BOUND) { $color = 'scarlet_red'; $level = 'Lo'; } else { if ($floorPercent >= self::LOW_UPPER_BOUND && $floorPercent < self::HIGH_LOWER_BOUND) { $color = 'butter'; $level = 'Med'; } else { $color = 'chameleon'; $level = 'Hi'; } } $itemTemplate->setVar(array('link', 'color', 'level', 'executed_width', 'executed_percent', 'not_executed_width', 'executable_lines', 'executed_lines', 'details'), array($item->getLink(FALSE, FALSE), $color, $level, floor($item->getExecutedPercent()), $item->getExecutedPercent(), 100 - floor($item->getExecutedPercent()), $item->getNumExecutableLines(), $item->getNumExecutedLines(), $details)); $result .= $itemTemplate->render(); } return $result; }
/** * Renders this node. * * @param string $target * @param string $title * @access public */ public function render($target, $title) { $template = new PHPUnit_Util_Template(PHPUnit_Util_Report::getTemplatePath() . 'coverage_file.html'); $i = 1; $lines = ''; foreach ($this->codeLines as $line) { $css = ''; if (isset($this->executedLines[$i])) { $count = ''; // Array: Line is executable and was executed. // count(Array) = Number of tests that hit this line. if (is_array($this->executedLines[$i])) { $color = 'lineCov'; $count = sprintf('%8d', count($this->executedLines[$i])); } else { if ($this->executedLines[$i] == -1) { $color = 'lineNoCov'; $count = sprintf('%8d', 0); } else { $color = 'lineDeadCode'; $count = ' '; } } $css = sprintf('<span class="%s"> %s : ', $color, $count); } $lines .= sprintf('<span class="lineNum"><a name="%d"></a><a href="#%d">%8d</a> </span>%s%s%s' . "\n", $i, $i, $i, !empty($css) ? $css : ' : ', $line . str_repeat(' ', array_shift($this->codeLinesFillup)), !empty($css) ? '</span>' : ''); $i++; } $this->setTemplateVars($template, $title); $template->setVar('lines', $lines); $cleanId = PHPUnit_Util_Filesystem::getSafeFilename($this->getId()); $template->renderTo($target . $cleanId . '.html'); }