protected function PHP_CodeCoverage_Report_HTML_Renderer_File::renderSource in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php \PHP_CodeCoverage_Report_HTML_Renderer_File::renderSource()
Parameters
PHP_CodeCoverage_Report_Node_File $node:
Return value
string
1 call to PHP_CodeCoverage_Report_HTML_Renderer_File::renderSource()
- PHP_CodeCoverage_Report_HTML_Renderer_File::render in vendor/
phpunit/ php-code-coverage/ src/ CodeCoverage/ Report/ HTML/ Renderer/ File.php
File
- vendor/
phpunit/ php-code-coverage/ src/ CodeCoverage/ Report/ HTML/ Renderer/ File.php, line 299
Class
- PHP_CodeCoverage_Report_HTML_Renderer_File
- Renders a PHP_CodeCoverage_Report_Node_File node.
Code
protected function renderSource(PHP_CodeCoverage_Report_Node_File $node) {
$coverageData = $node
->getCoverageData();
$testData = $node
->getTestData();
$codeLines = $this
->loadFile($node
->getPath());
$lines = '';
$i = 1;
foreach ($codeLines as $line) {
$trClass = '';
$popoverContent = '';
$popoverTitle = '';
if (array_key_exists($i, $coverageData)) {
$numTests = count($coverageData[$i]);
if ($coverageData[$i] === null) {
$trClass = ' class="warning"';
}
elseif ($numTests == 0) {
$trClass = ' class="danger"';
}
else {
$lineCss = 'covered-by-large-tests';
$popoverContent = '<ul>';
if ($numTests > 1) {
$popoverTitle = $numTests . ' tests cover line ' . $i;
}
else {
$popoverTitle = '1 test covers line ' . $i;
}
foreach ($coverageData[$i] as $test) {
if ($lineCss == 'covered-by-large-tests' && $testData[$test]['size'] == 'medium') {
$lineCss = 'covered-by-medium-tests';
}
elseif ($testData[$test]['size'] == 'small') {
$lineCss = 'covered-by-small-tests';
}
switch ($testData[$test]['status']) {
case 0:
switch ($testData[$test]['size']) {
case 'small':
$testCSS = ' class="covered-by-small-tests"';
break;
case 'medium':
$testCSS = ' class="covered-by-medium-tests"';
break;
default:
$testCSS = ' class="covered-by-large-tests"';
break;
}
break;
case 1:
case 2:
$testCSS = ' class="warning"';
break;
case 3:
$testCSS = ' class="danger"';
break;
case 4:
$testCSS = ' class="danger"';
break;
default:
$testCSS = '';
}
$popoverContent .= sprintf('<li%s>%s</li>', $testCSS, htmlspecialchars($test));
}
$popoverContent .= '</ul>';
$trClass = ' class="' . $lineCss . ' popin"';
}
}
if (!empty($popoverTitle)) {
$popover = sprintf(' data-title="%s" data-content="%s" data-placement="bottom" data-html="true"', $popoverTitle, htmlspecialchars($popoverContent));
}
else {
$popover = '';
}
$lines .= sprintf(' <tr%s%s><td><div align="right"><a name="%d"></a><a href="#%d">%d</a></div></td><td class="codeLine">%s</td></tr>' . "\n", $trClass, $popover, $i, $i, $i, $line);
$i++;
}
return $lines;
}